카테고리 없음
[2022 KAKAO TECH INTERNSHIP] 성격 유형 검사하기
코딩초보ran
2023. 12. 21. 14:27
10:29 시작 11:26 끝
문제 확인
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명과 입출력 예시 및 설명은 직접 읽고 이해해야할 것 같다.
근데 위 링크 들어가면 solution 코드도 같이 보이는 건가..?
혹시.. 들어가보신 분이 계시다면.. 댓글 남겨주시면 감사하겠습니다. :)
(저는 문제 처음푸는 화면으로 연결하고 싶어요!)
아이디어
글로 설명하는 건 참 어려운 것 같다.
결국 영상으로 올린다..
다음엔 처음부터 녹화를 해야겠다....ㅇㅅㅇ..
문제 풀이
def solution(survey, choices):
answer = ''
personality_ = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'] # 성격유형을 순서대로 넣은 list생성
mid = 4 # 선택 결과가 동의쪽인지 비동의쪽인지 확인하기 위해
# choice 결과가 4보다 크면 동의 관련 선택지를 선택한 거고,
# 4보다 작으면 비동의 관련 선택지를 선택한 것임
dict1= {} # 예시 : {'R':0, 'T':0, ...} 이렇게 만들기 위해서.
for p in personality_ : # dict1을 위 예시처럼 만들어줌.
dict1[p] = 0 # key: 성격유형, value:유형 별 점수
for s, c in zip(survey, choices): # survey: 질문별 성격판단지표, choices: 질문별 선택 결과
res = c - mid # 질문별 선택결과 - 4(딱 중간)
if res > 0: # res가 양수이면, idx=1
idx = 1
elif res < 0: # res가 음수이면, idx=0
idx = 0
else: # res가 0이면, dict에 있는 유형 별 점수에 더해줄 것이 없음
continue # 따라서 아래 코드는 건너 띄고 다음 반복 진행
key = s[idx] # 위에서 정해진 idx로 key를 만들어주고
dict1[key] += abs(res) # dict1에서 키에 해당하는 value에 res의 절댓값(res가 음수인 경우도 있기 때문에)을 더해준다.
# 유형 별 점수를 비교해서 큰 점수를 가진 유형을 반환해줄 것임.
for i in range(0,len(personality_),2): # 유형 2개씩만 비교해야함. R-T, J-M 이렇게.
# 그래서 index를 1개씩 건너띄는 코드로 작성
k1, k2 = personality_[i], personality_[i+1]
v1, v2 = dict1[k1], dict1[k2]
if v1 >= v2: # 성격 유형 점수가 같으면 유형 중 사전 순으로 빠른 성격유형을 반환해야하는데
# 이미 personality_에 알파벳 사전 순으로 정리를 해두었음.
# 그래서 그냥 두 유형 중에 앞에 있는 유형으르 반환해주면 됨.
# 따라서 >= 이렇게 넣어줌.
answer+=k1
elif v2 > v1:
answer+=k2
return answer
코드 (주석 없는 ver)
def solution(survey, choices):
answer = ''
personality_ = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N']
mid = 4
dict1= {}
for p in personality_ :
dict1[p] = 0
for s, c in zip(survey, choices):
res = c - mid
if res > 0:
idx = 1
elif res < 0:
idx = 0
else:
continue
key = s[idx]
dict1[key] += abs(res)
for i in range(0,len(personality_),2):
k1, k2 = personality_[i], personality_[i+1]
v1, v2 = dict1[k1], dict1[k2]
if v1 >= v2:
answer+=k1
elif v2 > v1:
answer+=k2
return answer
채점 결과
문제 출처 : 프로그래머스/ 성격 유형 검사하기/ Lv1