완주하지 못한 선수

송준희·2021년 1월 4일
0

알고리즘

목록 보기
2/44

이번 문제는 이전 문제보다 쉬웠던 것 같다. 하지만 실제로 문제를 푸는데에는 많은 시간이 걸렸다.


처음에는 리스트의 contains() 메소드를 이용해서 풀려고 했다.

구현은 쉬웠고 답도 맞았지만 효율성에 문제가 있었다.

배열의 길이가 길어질수록 List에 넣는데에 시간이 걸리기 때문에 그런 것 같다.


그래서 이번엔 정렬을 이용하기로 했다.

participant와 completion의 배열을 각각 정렬한 뒤

맨앞부터 비교하면 participant에는 있지만 completion에는 없는 이름이 있을 것이다.

다만 처음에 bubble sort를 이용했는데 Arrays.sort() 메소드를 이용하여 더 편하게 정렬했다.

하지만 문제 유형이 'Hash'였기 때문에 다시 한번 문제를 풀어봤다.


중복된 이름이 있을 수 있을 수 있기 때문에 Set이 아닌 Map을 사용하였다.

Map<String, Integer>에서 Integer값은 이름의 개수를 의미한다.

Map에서 Name을 통해 Integer값을 꺼내오고 여기서 ±1을 해주는 것이 포인트인데

map.getOrDefault() 메소드가 이 역할을 해줬기 때문에 별도로 로직을 구현하지는 않았다.

문제풀이

누구나 시간만 있으면 어떻게든 문제는 해결할 수 있다고 생각한다.

다만 알고리즘 문제을 푸는 것 뿐만 아니라 SW을 개발할 때도 마찬가지로

중요한 것은 항상 더 나은 방향으로 나아가는 것이다.

그러기 위해서는 현실에 안주하지 말고 공부해서 더 나아가야 한다.

profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글