-
[프로그래머스] 해시 - 완주하지 못한 선수알고리즘 공부/문제 풀이 2020. 8. 28. 22:17
처음에 ArrayList에 중복 값이 있어도 remove를 하면 하나의 값만 지워진다는 사실을 알고,
중복 처리를 안해도 되겠구나! 생각해서 ArrayList를 이용하여 문제를 해결하였다.
ArrayList<String> p=new ArrayList<>(); for(int i=0;i<participant.length;i++) p.add(participant[i]); for(int i=0;i<completion.length;i++) { p.remove(completion[i]); } answer=p.get(0);
하지만.. 효율성에서 시간 초과 문제로 실패하게 되었고..
문제 분류가 해시이니.. hashMap을 이용하여 문제를 풀었다.
key는 사람 이름이고 value는 사람 수를 이용하여 중복을 처리하였다.
static String solution(String[] participant, String[] completion) { String answer = ""; HashMap<String,Integer> map=new HashMap<>(); //map초기화 for(int i=0;i<participant.length;i++) { //중복 이름 value 늘리기 if(map.containsKey(participant[i])) { int val=map.get(participant[i]); map.replace(participant[i], val+1); } else map.put(participant[i], 1); } for(int i=0;i<completion.length;i++) { String key=completion[i]; if(map.get(key)==1) map.remove(key); else { int val=map.get(key); map.replace(key, val-1); } } Set<String> key=map.keySet(); Iterator<String> it=key.iterator(); answer=it.next(); return answer; }
'알고리즘 공부 > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 해시 - 위장 (1) 2020.08.31 [프로그래머스] 해시 - 전화번호 목록 (1) 2020.08.28 [프로그래머스] DFS/BFS - 단어 변환 (1) 2020.08.25 [프로그래머스] 깊이 우선 탐색 - 타겟 넘버 (1) 2020.08.25 [프로그래머스] 동적계획법 - 등굣길 (1) 2020.08.24