티스토리 뷰
문제 설명
숫자 야구 게임이란 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 함수를 작성해주세요.
제한사항
- 질문의 수는 1 이상 100 이하의 자연수입니다.
- baseball의 각 행은 [세 자리의 수, 스트라이크의 수, 볼의 수] 를 담고 있습니다.
입출력 예
baseball | return |
---|---|
[[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] | 2 |
입출력 예 설명
문제에 나온 예와 같습니다.
https://programmers.co.kr/learn/courses/30/lessons/42841?language=python3
1~9 이고, 중복된 숫자가 있으면 안된다.
filter 를 사용하면 간략화 할수 있다.
def solution(bb):
rs = list(filter(lambda x: "0" not in x and len(set(x)) == 3, list(map(str, range(111, 1000)))))
for b in bb:
i = 0
while len(rs) and i < len(rs):
ss, st, bl = str(b[0]), 0, 0
for j in range(len(ss)):
if rs[i][j] in ss:
if ss.index(rs[i][j]) == j:
st += 1
else:
bl += 1
if st != b[1] or bl != b[2]:
rs.pop(i)
else:
i += 1
return len(rs)
'python lecture > programmers' 카테고리의 다른 글
[edu] 카펫 : 완전탐색 (프로그래머스 lv2) (0) | 2018.12.22 |
---|---|
[edu] 예상 대진표 (프로그래머스 lv2) (1) | 2018.12.22 |
[edu] 포켓몬 : 찾아라 프로그래밍 마에스터 (프로그래머스 lv2) (0) | 2018.12.22 |
[edu] 구명보트 (프로그래머스 lv2) (0) | 2018.12.21 |
[edu] 조이스틱 : 탐욕법 (프로그래머스 lv2) (0) | 2018.12.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 장고 카톡 자동응답
- 파이썬 입문
- GIT
- virtualenv
- 플러스친구 자동응답
- 장고 플러스친구 자동응답
- 모바일 스킨 적용
- admin.py
- chatbot
- gitlab
- 파이썬 프로그래밍
- 파이썬 독학
- PuTTYGen
- 모바일 테마 적용
- 장고
- 면접정답
- 파이썬
- 이미지 비교
- 파이썬 강좌
- 문서 비교
- 면접답변
- django chatbot
- django
- Tistory
- pycrypto
- 엑셀 비교
- wsgi
- gitignore
- 문과 코딩
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함