반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인프런
- 자바스크립트 자료구조
- 싸피 기자단
- 싸피 대전캠퍼스
- 싸피10기
- 자바 코딩테스트
- jpa
- 싸피셜
- 프로그래머스
- ssafy
- 자바스크립트
- swea
- 비동기
- 코딩테스트 자바
- 자바 알고리즘
- 개발자
- 코드트리
- SSAFYcial
- 싸피11기
- 알고리즘 자바
- 싸피 10기
- 코딩테스트
- 백준
- 알고리즘
- 자료구조
- 프론트엔드
- 싸피 12기
- 싸피
- 싸피 11기
- 리액트
Archives
- Today
- Total
병아리의 코딩 일기
[BOJ 2503] 숫자 야구 Python 본문
https://www.acmicpc.net/problem/2503
요즘 파이썬으로 Brute Force 문제들을 연습하고 있다.
이전 방식과 다르다보니 완탐식 생각이 의외로 익숙하지가 않다
문제 풀이 전략
1.
일단 입력은 배열로 받아놔야 한다.
니중에 이용해먹을라면 ,,
2.
영수가 생각하고 있을 가능성이 있는 숫자를 모두 물었다.
그걸 알 방법이 없기 때문에
111 ~ 999 까지 다 돌려보아야 한다.
숫자가 중복되면 안되기 때문에
123, 124, 312 이런 식이어야 하고, 순열로 구하는게 더 낫겠지만
일단은 반복문 돌린 후 조건으로 걸러주었다.
3.
현재 볼 카운트, 현재 스트라이크 카운트를 생성해놓고,
민혁이가 부른 수와 영수가 생각한 수의 각 자리를 비교해보자.
파이썬 문법을 아직 잘 몰라서 이런 식으로 비교했다;
마지막 cnt == N이 아닌, cnt == 4로 해놓는 바람에 두번 틀렸었다 ㅠㅋㅋ
직관적으로 푸는 것과, 완탐적 사고방식을 더 연습해야겠다..!
ans = 0
N = int(input())
hints = [list(map(int, input().split())) for _ in range(N)]
for first in range(1, 10):
for second in range(1, 10):
for third in range(1, 10):
if first == second or second == third or first == third:
continue
cnt = 0
for arr in hints:
number = str(arr[0])
strike = arr[1]
ball = arr[2]
cur_strike = 0
cur_ball = 0
# 스트라이크인지 볼인지 확인한 후 strike와 ball 수와 비교하기
if number[0] == str(first):
cur_strike += 1
elif number[0] == str(second):
cur_ball += 1
elif number[0] == str(third):
cur_ball += 1
if number[1] == str(second):
cur_strike += 1
elif number[1] == str(first):
cur_ball += 1
elif number[1] == str(third):
cur_ball += 1
if number[2] == str(third):
cur_strike += 1
elif number[2] == str(first):
cur_ball += 1
elif number[2] == str(second):
cur_ball += 1
if cur_strike == strike and cur_ball == ball:
cnt += 1
if cnt == N:
ans += 1
print(ans)
728x90
반응형
LIST