배부른 마라토너

package coding;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Set;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// 완주한 사람을 구분하기 위한 변수
		HashMap<String, Integer> map = new HashMap<>(); 
		
		int participantNo = Integer.parseInt(br.readLine());
		
		for(int i=0; i<participantNo*2-1; i++) {
			String name = br.readLine();
			
			//map 값이 0인지 판단 => 0이면 1, 0아니면 0
			map.put(name,(map.getOrDefault(name, 0)==0)?1:0);
			
		}
		
		Set<String> keySet = map.keySet();
		for(String key : keySet) {
			//완주하지 못한 사람은 단 한명. 따라서, 1일 경우 완주 못한 사람
			if(map.get(key)==1) {
				System.out.println(key);
				break;
			}
		}
		
		br.close();
	}

}

다른 사람 풀이

import java.util.HashSet;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.nextLine());
		HashSet<String> set = new HashSet<>();
		for(int i=0;i<N+N-1;i++){
			String temp = sc.nextLine();
			if(set.add(temp) == false) set.remove(temp);
		}
		Object[] a = set.toArray();
		System.out.println(a[0]);
		sc.close();
	}
}

set.add(temp) => set에 temp가 없으면 추가하고 true 반환. 만약 temp가 있다면 추가 안하고 false 반환

이후 set을 배열로 바꾸어 출력함.
=> set.interator().next()를 쓰는 것이 더 좋을듯

좋은 웹페이지 즐겨찾기