본문 바로가기

코딩

[파이썬] 코딩테스트 연습 - 성격 유형 검사하기

반응형

저는 가끔 모르겠는 문제는 그저 노가다를 합니다...

'하나도 빠트리지 않고 중복되지 않게'

마치 고등학생 때 확률과 통계를 배울 때 들었던 것처럼, 뭔가를 곱할 지 더할 지 모르면 기본은 하나하나 세는 것이라며 '하나도 빠뜨리지 않고 중복되지 않게' 세면 된다는 정신을 이어받아서 그냥 해버릴 때도 있습니다.

이번 문제가 바로 그런 문제였던 것 같습니다.

그런 만큼 if elif else가 정말 많네요.

문제에서 어떤 상황에서 어떻게 항목이 더해지는 지 이미 알고 계실 거라는 가정하에 코드 작성에 어려움을 갖고 계신 분이 계실까봐 코드만 남겨놓고 갑니다.

 

def solution(survey, choices):
    answer = ''
    d = dict()
    for j in ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']:
        d[j] = 0
    for i in range(len(choices)):
        if choices[i] == 1:
            d[survey[i][0]] += 3
        elif choices[i] == 2:
            d[survey[i][0]] += 2
        elif choices[i] == 3:
            d[survey[i][0]] += 1
        elif choices[i] == 5:
            d[survey[i][1]] += 1
        elif choices[i] == 6:
            d[survey[i][1]] += 2
        elif choices[i] == 7:
            d[survey[i][1]] += 3
        else:
            pass
    if d['R'] >= d['T']:
        answer += 'R'
    else:
        answer += 'T'
    if d['C'] >= d['F']:
        answer += 'C'
    else:
        answer += 'F'
    if d['J'] >= d['M']:
        answer += 'J'
    else:
        answer += 'M'
    if d['A'] >= d['N']:
        answer += 'A'
    else:
        answer += 'N'
    return answer
반응형