-
[프로그래머스 코딩 테스트] 해시문제 1코딩테스트/프로그래머스 2022. 3. 7. 22:50반응형
안녕하세요 까치입니다. 이직 준비를 하면서 코딩테스트에 대해 좀 공부를 해야겠다고 생각하여 프로그래머스 코딩테스트를 하나하나 풀어보려고 합니다. 조금 시간이 걸리더라고 혼자 해보고 답안 볼려고 노력했습니다.
먼저 문제를 알아보면
participant = [] completion = []
위와 같이 두배열이 주어집니다. participant는 참가자 completion은 완주자 입니다. participant참가자중 completion을 제외한 미 완주자를 찾는 문제입니다. 그냥 배열 안에 있는 값을 비교해서 없는 값을 찾아내는 문제 였습니다. 그래서 아래와 같이 문제를 풀었는데
def solution(participant, completion): answer = '' for value in participant: if value not in completion: answer = value return answer
이게 왠걸 중복되는 값도 비교를 해야한다는 사실입니다. 그래서 생각한 방법을 거듭한 끝네 dict_participant와 dict_completion을 만들고 그 안에 갯수를 입력하여 비교하면서 0이 아닌값을 찾는 것으로 문제를 풀었습니다.
def solution(participant, completion): answer = '' part_dic = {} for part_value in participant: if part_value not in part_dic: part_dic[part_value] = 1 else: part_dic[part_value] = part_dic[part_value] + 1 for com_value in completion: if com_value in part_dic: part_dic[com_value] = part_dic[com_value] - 1 for part_value in participant: if part_dic[part_value] != 0: answer = part_value return answer
그래서 답을 본 순간.............. 진짜 머리 좋은 사람 많다고 느꼈습니다. 같은 문제 풀이지만 collections을 활용하여 연산을 하여 간결하게 작성을 할 수 있습니다. 후 이렇게 하나 또 배워갑니다.
import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) return list(answer.keys())[0]
반응형