일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 테를지국립공원
- 몽골 고기
- 몽골
- 월드프렌즈 ICT 봉사단
- 월드프렌즈
- 게르
- 소프트웨어 아카데미
- 알고리즘
- 아부다비
- 몽골 헬스장
- 한 줄로 서기
- algorithm
- ICT봉사단
- SWEA
- 독일
- 초원
- 파이썬
- Python
- 칭기즈칸
- 몽골요리
- LG글로벌챌린저
- 테를지
- 교환학생
- 백준
- 여행
- 헬스
- 칭기스칸 동상
- 울란바토르
- 담슈타트
- 코로나
Archives
- Today
- Total
맛있는물회
[맛있는물회] <programmers 알고리즘> "숫자 야구" 본문
문제 조건
숫자 야구 게임이란 2명이 서로가 생각한 숫자를 맞추는 게임입니다.
각자 서로 다른 1~9까지 3자리 임의의 숫자를 정한 뒤 서로에게 3자리의 숫자를 불러서 결과를 확인합니다. 그리고 그 결과를 토대로 상대가 정한 숫자를 예상한 뒤 맞힙니다.
* 숫자는 맞지만, 위치가 틀렸을 때는 볼 * 숫자와 위치가 모두 맞을 때는 스트라이크 * 숫자와 위치가 모두 틀렸을 때는 아웃
예를 들어, 아래의 경우가 있으면
A : 123 B : 1스트라이크 1볼. A : 356 B : 1스트라이크 0볼. A : 327 B : 2스트라이크 0볼. A : 489 B : 0스트라이크 1볼.
이때 가능한 답은 324와 328 두 가지입니다.
질문한 세 자리의 수, 스트라이크의 수, 볼의 수를 담은 2차원 배열 baseball이 매개변수로 주어질 때, 가능한 답의 개수를 return 하도록 solution 함수를 작성해주세요.
Input
- 질문의 수는 1 이상 100 이하의 자연수입니다.
- baseball의 각 행은 [세 자리의 수, 스트라이크의 수, 볼의 수] 를 담고 있습니다.
Output
생각한 아이디어
처음에는 접근을 잘 못하여서 꽤 고생했다.
딕셔너리를 사용해서 모든 값에 strike랑 ball을 입력하려 했는데 너무 힘들었다.
그래서 조금 직관적으로 123 ~ 987까지니깐 순열 조합을 사용하면 어떨까 라는 생각으로 접근을 하였다.
그래서 모든 값을 조합으로 만들어버리고 주어진 질문의 값을 비교해가며 끝까지 수행하였다.
생각보다 쉽게 풀렸다.
스트라이크의 경우는 세자리 수를 차례로 비교하며 계산하고, 볼 같은 경우는 in 을 사용하여 검색한 뒤 스트라이크의 수를 빼주는 방법으로 수행하였다.
소스코드
from itertools import combinations,permutations
def solution(baseball):
answer = 0
ball = [1,2,3,4,5,6,7,8,9]
for val in permutations(ball,3):
for i in range(0,len(baseball)):
play = str(baseball[i][0])
cnt = 0
flag = 0
for j in range(0,3):
if int(play[j]) == val[j]:
cnt +=1
if cnt == baseball[i][1]:
flag = 1 #스트라이크 개수 맞으면
if flag == 0: #스트라이크 개수 안맞음
break
cnt = 0
flag = 0
for j in range(0,3):
if int(play[j]) in val: cnt +=1
if (cnt-baseball[i][1]) == baseball[i][2]: flag = 1 #볼 개수 맞으면
if flag == 0: #볼 개수 안맞음
break
if i == (len(baseball) - 1):
answer +=1
continue
#dfs(0,answer, baseball)
print(answer)
return answer
*파이썬 문법 정리
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <백준 알고리즘> 11727번 "연결 요소의 개수" (0) | 2020.04.16 |
---|---|
[맛있는물회] <백준 알고리즘> 14502번 "연구소" (0) | 2020.04.16 |
[맛있는물회] <programmers 알고리즘> "타겟 넘버" (0) | 2020.04.15 |
[맛있는물회] <programmers 알고리즘> "N으로 표현" (0) | 2020.04.15 |
[맛있는물회] <백준 알고리즘> 10844번 "쉬운 계단 수" (0) | 2020.04.08 |
Comments