Baekjoon - 10814

Tadap·2023년 9월 4일
0

Baekjoon

목록 보기
3/94

문제
Solved.ac CLASS2+

1차시도

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int size = Integer.parseInt(br.readLine());

		LinkedList<User> users = new LinkedList<>();

		for (int i = 0; i <size; i++) {
			String[] readline = br.readLine().split(" ");
			int age = Integer.parseInt(readline[0]);
			String name = readline[1];
			users.add(new User(age, name));
		}

		users.sort(new Comparator<User>() {
			@Override
			public int compare(User u1, User u2) {
				if (u1.age - u2.age == 0) {
					return 1;
				}
				return u1.age - u2.age;
			}
		});
		StringBuilder sb = new StringBuilder();

		for (User user : users) {
			sb.append(user.print());
		}
		System.out.println(sb);
	}

	public static class User{
		int age;

		String name;

		public User(int age, String name) {
			this.age = age;
			this.name = name;
		}

		public String print() {
			return age + " " + name + "\n";
		}
	}
}

객체를 만들고 Comparator를 구현하여 비교하였다, 예제는 통과했으나 런타임 에러를 뱉으며 터졌다

실패

2차시도

여러번 뭘 바꿔도 같은 오류를 뿜어 comparator문제인가 싶어 if문을 없애보았다. 논리적으로 봤을때 없어도 된다.
그리고 print매소드를 toStringOverride하는 형태로 변경하였다.

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int size = Integer.parseInt(br.readLine());

		LinkedList<User> users = new LinkedList<>();

		for (int i = 0; i <size; i++) {
			String[] readline = br.readLine().split(" ");
			int age = Integer.parseInt(readline[0]);
			String name = readline[1];
			users.add(new User(age, name));
		}

		users.sort(new Comparator<User>() {
			@Override
			public int compare(User u1, User u2) {
				return u1.age - u2.age;
			}
		});
		StringBuilder sb = new StringBuilder();

		for (User user : users) {
			sb.append(user.toString());
		}
		System.out.println(sb);
	}

	public static class User{
		int age;

		String name;

		public User(int age, String name) {
			this.age = age;
			this.name = name;
		}

		@Override
		public String toString() {
			return age + " " + name + "\n";
		}
	}
}

성공

0개의 댓글