https://school.programmers.co.kr/learn/courses/30/lessons/42576
Source Code : https://github.com/JangAJang/Algorithm/blob/main/프로그래머스_Lv1/완주하지%20못한%20선수/src/Solution.java
코드에 대한 생각은 쉬웠다.
해시맵을 이용했는데, 해시맵은 key, value로 이루어져 있으며, key에 value를 매핑해서 저장시키는 용도이다.
key를 이용해 value를 불러오고, 수정하고, 제거하고, key-value로 저장시키기도 한다.
참여자들을 해시맵으로<String, Integer>로 만들고, 여기에서 도착한 사람들을 key로 이용해 그 value를 1씩 줄여주면 된다.
메서드를 간소화해서 사용하기 위해 조금 더 머리를 썼던 것 같다.
private String getLeft(HashMap<String, Integer> map){
for(String s : map.keySet()){
if(map.get(s)!=0) return s;
}
return "";
}
이 부분이 개인적으로 아쉬웠던 것 같다.
반복문 안에 조건문을 넣어서 들여쓰기가 2단으로 들어갔는데, 이를 1단으로 줄이기 위해서 HashMap과 String을 받는 메서드를 하나 더 만들까를 고민했다.
private String getLeft(HashMap<String, Integer> map){
String name = "";
for(String s : map.keySet()){
if(map.get(s)!=0) name = getNoneZeroName(s, map);
}
return name;
}
private String getNoneZeroName(String s, HashMap<String, Integer> map){
if(map.get(s) != 0) return s;
return "";
}
이런 식으로 나눌 수 있지만 사용하지 않은 이유는, 여기에서 조건문을 이용한 리턴을 하지 않는다면, map의 키값을 모두 확인 한 후 결과를 리턴하기 때문이다.
반복문을 중간에 멈추고 리턴하는 것과, 전부 훑는 것의 시간 차이가 많기 때문에 위의 방식을 사용했다.
혹시 더 나은 코드가 있으시다면 알려주시면 감사하겠습니다!!
'개발공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] PCCP 2번. 석유시추 (2) | 2024.03.06 |
---|---|
[프로그래머스] lv.2 전력망을 둘로 나누기 (0) | 2023.02.10 |
[프로그래머스] 코딩테스트 Lv.1 신규 아이디 추천 (0) | 2022.10.28 |
[프로그래머스] 코딩테스트 Lv.1 완주하지 못한 선수 (0) | 2022.10.28 |
[프로그래머스] 코딩테스트 Lv.1 키패드 누르기 (0) | 2022.10.25 |