
반응형
0단계 문제인데 어떻게 풀지 고민하는데 시간이 조금 걸렸다
정답률이 낮은 이유가 있었던 문제 ㅎㅎ
문제
코드
def solution(a, b, c, d):
lst = [a, b, c, d]
answer = 0
cnt_dict = dict()
for e in lst:
if e not in cnt_dict.keys():
cnt_dict[e] = 0
cnt_dict[e] += 1
# 주사위 수
keys_list = list(cnt_dict.keys())
# 주사위 수가 나온 횟수
value_list = list(cnt_dict.values())
# 경우의 수 : 4
if len(cnt_dict) == 1:
answer = 1111 * a
return answer
# cnt_dict가 2이면
# 경우의 수 : 3, 1 혹은 2, 2
if len(cnt_dict) == 2:
for i in range(2):
p = keys_list[i]
q = keys_list[i-1]
if value_list[i] == 3:
answer = (10 * p + q) ** 2
return answer
if value_list[i] == 2:
answer = (p + q) * abs(p - q)
return answer
if len(cnt_dict) == 3:
for i in range(3):
p = keys_list[i]
q = keys_list[i-1]
r = keys_list[i-2]
if value_list[i] == 2:
answer = q * r
return answer
if len(cnt_dict) == 4:
answer = min(keys_list)
return answer
return answer
코드 설명
cnt_dict라는 딕셔너리에는
key 값에 "주사위 수", value 값에 "주사위 수가 나온 횟수" 가 저장이 됩니다.
예를 들어 주사위를 굴렸을 때 1이 3번 나오고, 2가 2번 나왔다면
cnt_dict = {1:3, 2:2}
가 들어가게 된다.
- cnt_dict 의 길이가 1일 경우, 4번 던졌을 때 1개의 값이 나온 것이다.
- cnt_dict 의 길이가 2일 경우, 경우의 수는 2가지이다.
1) 2번, 2번 같은 숫자가 나왔거나
2) 3번, 1번(혹은 1번, 3번) 같은 숫자가 나왔다.
value_list에 cnt_dict의 values를 리스트 형태로 넣어서 조건문을 비교하였다.
- cnt_dict 의 길이가 3일 경우, 2개가 같은 숫자이고 1개 1개 숫자가 다르게 나온 것이다.
- cnt_dict 의 길이가 4일 경우, 다 다른 숫자가 나온 것이다.
각 상황일 때 문제 설명에서 원하는 계산식을 적용해서 answer 변수에 담아주었다.
그 다음에 answer를 구했기 때문에 return answer 해서 함수에서 값을 리턴해주었다.
반응형
'코테공부' 카테고리의 다른 글
[Python] 연습문제 : 다음 큰 숫자 (0) | 2023.09.25 |
---|---|
[Python] 연습문제 : 숫자의 표현 (0) | 2023.09.21 |
[Python] 연습문제 : 최솟값 만들기 (0) | 2023.09.20 |
[Python] 연습문제 : JadenCase 문자열 만들기 (0) | 2023.09.20 |
[Python] 연습문제 : 최댓값과 최솟값 (0) | 2023.09.20 |