본문 바로가기

Problem Solving/프로그래머스

[프로그래머스/파이썬] 성격 유형 검사하기

문제 해석



문제 풀이


결국 각 문항마다 점수를 부여하는데 (매우 비동의 3점) ~ (모르겠음 0점) ~ (매우 동의 3점) 이라고 생각하면

각 문항에 대해 한 가지 성격 유형을 음수 다른 나머지를 양수로 지정하고 계산하면 되는 것이다.

 

조금 복잡하지만 최대한 간단한 방법은 map을 이용하는 방법이라고 생각했다.

요즘 특히 프로그래머스 lv.1에 map을 이용한 풀이 문제가 참 많아서 바로 map을 떠올리기도 했다.
(이렇게 유형타면 실제 코테에서 말아먹을텐데... 자꾸 게으르게 편한 방법을 생각한다.)

 

우선 나는 한가지 성격 유형을 map으로 지정해주고 그 유형이 앞글자라면 동의를+3점으로

그 유형이 뒷글자라면 비동의를 +3점으로 처리하였다.

 

이후 각 점수에 대한 결과로 양수면 지정된 성격 유형을 반대라면 다른 성격유형을 출력하도록 하였고

동일한 값(0)을 가진다면 알파벳순으로 출력하도록 하였다.


코   드


def solution(survey, choices):
    opposite = {'R':'T', 'C':'F', 'J':'M', 'A':'N'}
    answer = ''
    mp = {'R':0, 'C':0, 'J':0, 'A':0}
    for i in range(len(survey)):
        if survey[i][0] in mp.keys():
            mp[survey[i][0]] -= (choices[i] - 4)
        else:
            mp[survey[i][1]] += (choices[i] - 4)
    
    for it in mp.keys():
        if mp[it] >= 0:
            answer += it
        else:
            answer += opposite[it]
    return answer

느낀점: 아직 파이썬이 익숙치 않아서 좀 C++과 스타일이 다른게 어렵다. 그리고 풀이 보니까 더 쉽게 잘하는 사람들 많던데 나도 얼른 그렇게 되고 싶다.

링크: https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr