Programmers Code/Level 1

[Programmers] level1 - 성격 유형 검사하기 (Python) : 2022 카카오 테크 인턴십

NIMHO 2022. 8. 23. 15:52
728x90

▶성격 유형 검사하기 - 2022 카카오 테크 인턴십 (level 1)

문제    출력

https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=python3

 

프로그래머스

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

programmers.co.kr

보통은 문제를 적는데, 너무 길어서 링크로 대체하도록 하겠습니다.

 

제한사항

  • 1 ≤ survey의 길이 ( = n) ≤ 1,000
    • survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
    • survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
    • survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
    • choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.
    • 1 ≤ choices의 원소 ≤ 7 choices의 길이 = survey의 길이

 

풀이

성격의 모든 유형에 대해서 확인을 해주어야 한다.

그래서 for을 돌릴 때 l, r을 확인을 하고, 1~3일 땐 l에, 5~7일 땐 r에 더해주도록 구현하였다.

더해주기 위해서는 그 값을 저장하는 변수가 필요한데 하나하나 하면 길어지기 때문에

dictionary를 이용해서 해주었다.

 

그리고 마지막에 RT, CF, JM, AN 각각 비교해서 큰 값을 가지는 성격 유형을

answer에 저장해서 return 해주었다.

def solution(survey, choices):
    answer = ''
    check = {"R":0, "T":0, "C":0, "F":0, "J":0, "M":0, "A":0, "N":0, }
    for i in range(len(choices)):
        l = survey[i][0]
        r = survey[i][1]
        if choices[i] == 4:
            continue
        elif choices[i] < 4:
            check[l] += (4 - choices[i])
        else:
            check[r] += (choices[i] - 4)
    answer += "R" if check["R"] >= check["T"] else "T"
    answer += "C" if check["C"] >= check["F"] else "F"
    answer += "J" if check["J"] >= check["M"] else "M"
    answer += "A" if check["A"] >= check["N"] else "N"
    return answer

이번 문제는 따로 효율성 테스트가 없는 문제였다.

level 1이어서 그런지 정확성만 통과하면 정답으로 나오는 문제다.

 

코드도 길지 않고, 쉽고 간단하게 구현할 수 있는 문제였다.

728x90