728x90

백준 10814번 나이순 정렬


내가 떠올린 풀이 해설

정렬 문제이다. Arrays.sort()를 사용해서 정렬을 한다. 또한 Comparator를 이용한다. o1은 첫 번째 행이고 arr [0][0]이다.  o2는 두 번째 행이고 arr [1][0]이다. o1[0] - o2[0] 정렬해준다.


정확한 풀이

import java.io.*;
import java.util.*;
public class Baek10814 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		String [][] arr = new String[n][2];
		
		for(int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			arr[i][0] = st.nextToken();
			arr[i][1] = st.nextToken();
		}
		Arrays.sort(arr, new Comparator<String[]>() {

			@Override
			public int compare(String[] o1, String[] o2) {
				return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]);
			}
			
		});
		for(int i = 0; i < n; i++) {
			System.out.println(arr[i][0]);
			System.out.println(arr[i][1]);
		}
	}
}

백준 11650번 좌표 정렬하기


내가 떠올린 풀이 해설

기본 정렬 문제이다. Point 클래스를 만들어서 Comparable를 이용해서 정렬을 진행했다. this.x 와 o.x가 같으면 y값으로 비교했다.

import java.io.*;
import java.util.*;
public class Baek11650 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		ArrayList<Point> arr = new ArrayList<>();
		
		for(int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int x = Integer.parseInt(st.nextToken());
			int y = Integer.parseInt(st.nextToken());
			arr.add(new Point(x, y));
		}
		Collections.sort(arr);
		for(Point o : arr) {
			System.out.println(o.x + " " + o.y);
		}
	}
}
class Point implements Comparable<Point> {
	int x;
	int y;
	Point(int x, int y) {
		this.x = x;
		this.y = y;
	}
	@Override
	public int compareTo(Point o) {
		if(this.x == o.x) {
			return this.y - o.y;
		}
		else {
			return this.x - o.x;
		}
	}
}

오늘의 회고

복습을 끝내고 시간이 남아서 정렬 문제 2문제를 풀었습니다. 기본적인 정렬 문제라 시간이 많이 걸리지는 않았습니다. 아직 배워야 하는 알고리즘들이 많은데 너무 성급하게 넘어가지 말고 정석대로 공부하자.

728x90

+ Recent posts