문제 해석
문제 풀이
결국 각 문항마다 점수를 부여하는데 (매우 비동의 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
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스/파이썬] 최소직사각형 해설 및 증명 (2) | 2023.04.28 |
---|---|
[프로그래머스/파이썬] 2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도 (0) | 2023.04.24 |
[프로그래머스/C++] 달리기 경주 풀이 (0) | 2023.04.17 |
[프로그래머스/C++] 디스크 컨트롤러 풀이 (0) | 2023.04.14 |
[프로그래머스/C++] 2023 KAKAO BLIND RECRUITMENT 택배 배달과 수거하기 (0) | 2023.03.30 |