알고리즘

[알고리즘] 자바 중복 제거

행복하개! 2020. 8. 30. 14:46
public class BaekJoon_14_1181 {

	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(reader.readLine());
		Set<String> hs = new HashSet<String>();

		// 해쉬 셋을 이용한 중복 제거
		for (int i = 0; i < n; i++) {
			hs.add(reader.readLine());
		}

		String[] sarr = hs.toArray(new String[0]); // 리스트를 배열로
		Arrays.sort(sarr, (e1, e2) -> {
			if (e1.length() == e2.length()) {
				return e1.compareTo(e2);
			} else {
				return e1.length() - e2.length();
			}
		});

//		List<String> list = new ArrayList<String>(Arrays.asList(sarr)); // 배열을 리스트로
//		Collections.sort(list, (e1, e2) -> {
//			if (e1.length() == e2.length()) {
//				return e1.compareTo(e2);
//			} else {
//				return e1.length() - e2.length();
//			}
//		});

		for (String a : sarr) {
			writer.write(a + "\n");
		}

//		for (String a : list) {
//			writer.write(a + "\n");
//		}

		writer.close();
		reader.close();
	}

}

HashSet은 중복이 안됨. HashSet에 먼저 담고 배열이든 리스트든 변환한다.