문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
해당 문제는 아래에 보이는 부분을 구현하면 되는 문제이다.
문제 풀이 방법은 다음과 같다.
- choice는 설문조사에서 왼쪽 오른쪽을 각각 [3, 2, 1, 0, 1, 2, 3] 점수만큼 부여하기 때문에, 이를 dict형으로 표현한다.
- 각 요소 (예 : R, T, C, F)에 점수를 부여하여 큰 값을 비교하면 됨으로 이를 dict형으로 표현한다.
- 각 유형검사에서 비교 대상은 각각 ['RT', 'CF', 'JM', "AN"] 이므로, 각 요소의 좌, 우를 비교하여 큰 값을 문자열에 추가하여 답을 구한다.
이를 구현한 코드는 다음과 같다.
from collections import defaultdict
def solution(survey, choices):
# 알파벳 점수 기록용 dict
survey_kinds = defaultdict(int)
# 설문조사 점수 기록용 dict
choice = dict(zip(range(1, 8),[3, 2, 1, 0, 1, 2, 3]))
for element, score in zip(survey, choices):
if score < 4:
survey_kinds[element[0]] += choice[score]
elif score > 4:
survey_kinds[element[1]] += choice[score]
case = ['RT', 'CF', 'JM', "AN"]
answer = ""
for element in case:
if survey_kinds[element[0]] < survey_kinds[element[1]]:
answer += element[1]
else:
answer += element[0]
return answer
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 LV1 둘만의 암호 (0) | 2023.05.19 |
---|---|
프로그래머스 LV1 대충 만든 자판 (0) | 2023.05.19 |
프로그래머스 LV1 [1차] 비밀지도 (0) | 2023.05.17 |
프로그래머스 LV1 짝지어 제거하기 (0) | 2023.05.17 |
프로그래머스 LV1 신고 결과 받기 (0) | 2023.05.11 |