-
Programmers LV.1 완주하지 못한 선수Programmers 2020. 12. 16. 19:27
이번 코딩테스트를 공부하면서,
차근차근 보자는 생각으로 진행하였다,
해당 문제는 Hash 를 가지고 해결하라는 문구가 써있었지만,
원래 하던 개발 방식적으로 우선적으로 접근해보기로 하였다.
List<String>으로 constains를 이용하여 존재여부를 통하여 처리 할 수 있도록 진행하려 하였으나,
효율성 면에서 부족하단 평가를 받았다.
import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; List<String> completPeopleList = new ArrayList<String>(); List<String> participantPeopleList = new ArrayList<String>(); for(String completPeople : completion) { completPeopleList.add(completPeople); } for(String participantPeople : participant) { if(completPeopleList.contains(participantPeople)) { if(participantPeopleList.contains(participantPeople)){ answer = participantPeople; }else{ participantPeopleList.add(participantPeople); } }else{ answer = participantPeople; } } return answer; } }
위와 같이 코드 개발을 진행 한 후
Hash 만을 사용하여 진행하기 위하여 자료구조 기초를 다시한번 흩은 뒤 확인하다보니
사내는 현재 JDK 1.7을 쓰고 있는데, JDK 1.8에 getOrDefault 가 존재하는것을 알았고, 조금 더 코드가 줄어 들어 분리해야할 내역이 주는것을 확인하였다,
이를통하여 아래와 같이 간단하게 Hash를 사용하여 통과 완료 하였다.
participant가 여러명있을 경우, map에서 가져와 value + 1 을 진행함
-> 같은 동명이인이 있을 경우 동명이인의 수만큼 value가 증가
completion 리스트 인원에 participant 인원이 있을 경우, value -1 씩 차감
최종적으로 map key set으로 돌리면서 0이 아닌 인원이 통과 하지 못한것을 도출해낼 수 있음
import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; Map<String,Integer> completionPeopleList = new HashMap<String, Integer>(); for(String participantPeople : participant) completionPeopleList.put(participantPeople ,completionPeopleList.getOrDefault(participantPeople,0) + 1); for(String completPeople : completion) completionPeopleList.put(completPeople ,completionPeopleList.get(completPeople) - 1); for(String key : completionPeopleList.keySet()){ if(completionPeopleList.get(key) != 0) answer = key; } return answer; } }
'Programmers' 카테고리의 다른 글
Programmers LV.2 다리를 지나가는 트럭 (0) 2020.12.23 Programmers LV.2 주식가격 (0) 2020.12.20 Programmers LV.3 베스트앨범 (0) 2020.12.19 Programmers LV.2 위장 (0) 2020.12.17 Programmers LV.2 전화번호 목록 (0) 2020.12.16