티스토리 뷰
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
주사위 4개를 굴렸을 때 나온 숫자에 따라 점수 계산하기
1. 주사위 4개가 모두 같은 숫자일때 -> 1111 * q
2. 3개의 주사위에서 같은 숫자, 1개 주사위에서 다른 숫자일때 -> (10 * p + q)^2
3. 주사위 2개씩 같은 숫자 -> (p+q) * |p-q|
4. 주사위 2개가 같은숫자(p), 나머지 두 주사위에서 각각 다른 숫자일때 -> q * r(q, r은 각각 다른 숫자)
5. 주사위 4개가 모두 다른 숫자일때 가장 작은수
Q. LEVEL 0의 난이도이지만, 2023년 09월 기준 정답률이 45% 정도이다.
접근했던 방법
1. python3 dic 자료형을 이용한다.
Key : 주사위를 굴려 나온 숫자 / Value : 나온 횟수
Ex) 주사위 값이 6일때 -> keyValue={6:1}
2. keyValue Dic형의 길이값을 통해 경우의 수 추론
- 길이가 4일때 : 4개다 다른 숫자
- 길이가 1일때 : 4개다 같은 숫자
- 길이가 3일때 : 2개가 같고, 각각 다른 숫자 (1개 , 1개)
- 길이가 2일때
- 1) 2개씩 각각 같은 숫자 ex) 6, 6, 3, 3
- 2) 3개가 같고, 1개가 다른 숫자 ex) 4, 4, 4, 1
3. Value값을 순회하며 확인하긴 시간이 오래 소요되므로 ValueKey 형태로 Dic 생성.
--> Dic의 경우 Key값이 중복될때 마지막 값으로 덮어쓰므로, key 값은 list 형태로 사용.
ex) 주사위를 굴려 나온 숫자가 2, 2, 4, 4 일때 ValueKey = :{2:[2, 4]}
따라서 최종 소스코드
최종 소스코드
# 주사위 게임3 def solution(a, b, c, d): answer = 0 keyValue = {} valKeyDic = {} for i in (a, b, c, d): if keyValue.get(i) == None: keyValue[i] = 1 else: keyValue[i] = keyValue[i] + 1 for key, value in keyValue.items(): if valKeyDic.get(value) != None: valKeyDic.get(value).append(key) else: valKeyDic[value] = [key] print('valKeyDic : ', valKeyDic) if len(keyValue) == 1: # 4개 다 같은 숫자 answer = 1111 * a elif len(keyValue) == 2: if valKeyDic.get(3) != None: # 3개 같은숫자 p = valKeyDic[3][0] q = valKeyDic[1][0] answer = (10 * p + q) * (10 * p + q) elif valKeyDic.get(2) != None: # 2개, 2개 같은 숫자 p = valKeyDic[2][0] q = valKeyDic[2][1] answer = (p + q) * abs(p - q) elif len(keyValue) == 3: q = valKeyDic[1][0] r = valKeyDic[1][1] answer = q * r elif len(keyValue) == 4: # 4개 다 다른경우 answer = min(a, b, c, d) return answer
'CS > 코딩테스트' 카테고리의 다른 글
프로그래머스 - 다음 큰 숫자 - python3 (0) | 2023.11.06 |
---|---|
프로그래머스 - LEVEL2 - JadenCase 문자열 만들기 (0) | 2023.11.03 |
프로그래머스 - LEVEL1 - 바탕화면 정리 - python3 (2) | 2023.11.01 |
[1차] 다트 게임 - 프로그래머스 - LEVEL1 (2) | 2023.10.30 |
프로그래머스 - LVEL1 - [공원 산책] (0) | 2023.09.21 |
- Total
- Today
- Yesterday
- composition api
- Leve2
- Java
- 다음 큰 숫자
- LELVE1
- 문자열만들기
- spring
- collections
- Mac
- 명시적 초기화
- optionsAPI
- builder
- Level2
- 인스턴스초기화블럭
- python3
- vue3란?
- defaultdict
- JadenCase
- 프로그래머스
- JAVA 변수 초기화
- vue3
- level1
- 문제 리포트
- 괄호 회전하기
- 숫자의표현
- 초기화블럭
- 주사위게임3
- vue정의
- 클래스초기화블럭
- python2.7
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |