반응형
문제
구현 문제였고, 다른 사람 풀이 보니 매우 쉽게 풀었다,, 객체를 사용하다보니 좀 더 오래 걸린 거 같지만 로직 자체는 간단하다.
시간 복잡도는 survery의 크기만큼 한번 for문을 돌아 O(N)이다
코드
def solution(survey, choices):
answer = ''
personalities = {}
personalities["RT"] = Personality("R", "T")
personalities["CF"] = Personality("C", "F")
personalities["JM"] = Personality("J", "M")
personalities["AN"] = Personality("A", "N")
for idx in range(len(survey)):
personality = personalities[survey[idx]] if survey[idx] in personalities else personalities[survey[idx][::-1]]
left, right = survey[idx]
score = choices[idx] - 4
if score < 0 :
personality.types[left] += abs(score)
elif score > 0 :
personality.types[right] += abs(score)
for key, val in personalities.items():
answer += val.getBiggerType()
return answer
class Personality:
def __init__(self, type1, type2):
self.types = {}
self.types[type1] = 0
self.types[type2] = 0
def getBiggerType(self):
key1, key2 = self.types.keys()
bigger = key1 if key1 < key2 else key2
if self.types[key1] > self.types[key2]:
bigger = key1
elif self.types[key1] < self.types[key2]:
bigger = key2
return bigger
반응형
'👨🏫ps > ❄️프로그래머스' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 (0) | 2023.03.16 |
---|---|
[프로그래머스] 숫자의 표현 [python] (0) | 2023.03.15 |
[프로그래머스] 신규 아이디 추천 [python] (0) | 2023.03.14 |
[프로그래머스] 신고 결과 받기 [python] (0) | 2023.03.13 |
[프로그래머스] 개인정보 수집 유효기간 [Python] (0) | 2023.03.12 |