ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스 코딩 테스트] 해시문제 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]

     

    반응형

    댓글

Designed by Tistory.