2022 KAKAO TECH INTERNSHIP 문제

코딩테스트 연습에 공개된 문제는 (주)그렙이 저작권을 가지고 있습니다.
(지문 하단에 별도 저작권 표시 문제 제외)
코딩테스트 연습 문제의 지문, 테스트케이스, 풀이 등과 같은 정보는 비상업적, 비영리적 용도로 게시할 수 있습니다.

코딩테스트 정보

  • 프로그래머스
  • python
  • level 1
  • 점수 : 캡쳐 못함
  • 문제 링크


풀이 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(survey, choices):
    answer = ''

    dict_ = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0}
    list_ = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
    n = 0
    
    for s, c in zip(survey, choices):
      dict_[s[0]] += 4 - c
        
    for i in range(len(list_)//2):
      if dict_[list_[n]] >= dict_[list_[n+1]]:
        answer += list_[n]
      else:
        answer += list_[n+1]
      n += 2

    return answer

  • 테스트케이스 20개 : 0.21ms


■■■■ 접근 방식 ■■■■

각 대응쌍 성격유형끼리 ‘상대적’ 이라는 점에서 착안하였다.
즉, 어떤 성격유형의 절대적 점수를 계산할 필요가 없이, 대응되는 상대 성격유형의 점수와만 비교하면 되는 것이다.
이를 통해 질문의 성격유형 대응쌍의 첫 번째 성격유형에만 점수를 매김으로써 짧은 코드 작성이 가능했다.


리뷰

  • 절대적 점수가 아닌 상대적 점수만 구하면 된다는 착안점이 코드를 단순화하는 단초가 되었다.