https://www.acmicpc.net/problem/2503
2503๋ฒ: ์ซ์ ์ผ๊ตฌ
์ฒซ์งธ ์ค์๋ ๋ฏผํ์ด๊ฐ ์์์๊ฒ ๋ช ๋ฒ์ด๋ ์ง๋ฌธ์ ํ๋์ง๋ฅผ ๋ํ๋ด๋ 1 ์ด์ 100 ์ดํ์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค. ์ด์ด์ง๋ N๊ฐ์ ์ค์๋ ๊ฐ ์ค๋ง๋ค ๋ฏผํ์ด๊ฐ ์ง๋ฌธํ ์ธ ์๋ฆฌ ์์ ์์๊ฐ ๋ตํ ์คํธ
www.acmicpc.net
โ ์์ด๋์ด
๋จธ๋ฆฌ๋ก๋ ๋๋ฌด ์ ์๊ฒ ๋๋ฐ ์ฝ๋๋ก ๊ตฌํํ๋ ค๋๊น ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด์ง ์์์๋ค.
๊ฐ๋จํ๊ฒ ์๊ฐํด์ ๋ธ๋ฃจํธํฌ์ค๋ก ํ๋ฉด ๋๋ค.
๋ฏผํ์ด๊ฐ ์ง๋ฌธํ ๋๋ง๋ค
์ ๋ต์ด ๋ ์ ์๋ ๋ชจ๋ ์(123 ~ 987)๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฆฌ์คํธ์์ ๋ต์ผ ์ ์๋ ์๋ค์ ๋ชจ๋ ์ ์ธํ์ฌ,
๋ง์ง๋ง์ ๋จ๋ ์๋ค์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์๋ฅผ ๋ค๋ฉด ๋ฏผํ์ด๊ฐ 123์ด๋ผ๊ณ ์ง๋ฌธ, ์์๊ฐ 1 ์คํธ๋ผ์ดํฌ 1 ๋ณผ์ด๋ผ๊ณ ๋๋ตํ๋ค๋ฉด,
123์ ๋ํ ๋๋ต์ด 1์คํธ๋ผ์ดํฌ 1๋ณผ์ด ๋์ฌ ์ ์๋ ์๋ค์ ์ ๋ต ํ๋ณด๊ฐ ๋ ์ ์์ผ๋ฏ๋ก, ๋ชจ๋ ๋ฆฌ์คํธ์์ ์ ์ธํ๋ค.
โ ์ฃผ์ํ ์
- ์ ๋ต ํ๋ณด๋ 111๋ถํฐ 999๊น์ง๊ฐ ์๋, 123๋ถํฐ 987๊น์ง์ด๋ค.
- 0์ด ํฌํจ๋๊ฑฐ๋ ์ค๋ณต๋ ์ซ์๊ฐ ์๋ ์๋ ์ ๋ต ํ๋ณด์์ ์ ์ธํด์ผ ํ๋ค. (์์: 130, 114)
โ ์ ์ถ ์ฝ๋
import sys
input = sys.stdin.readline
def check(q, a, b):
qnum = [q//100, (q%100)//10, q%10] # ์์๊ฐ ๋งํ ๋ต
for i in range(123,988):
if i not in ans_lst:
continue
strike, ball = 0, 0
inum = [i//100, (i%100)//10, i%10]
for j in range(3):
if qnum[j] in inum:
ball += 1
if qnum[j] == inum[j]:
strike += 1
ball -= 1
if strike == a and ball == b:
pass
else:
if i in ans_lst:
ans_lst.remove(i)
# ์ ๋ต ํ๋ณด ๋ฆฌ์คํธ
ans_lst = [i for i in range(123,988)]
for i in range(123,988):
if len(set([i//100, (i%100)//10, i%10])) != 3 or '0' in str(i):
if i in ans_lst:
ans_lst.remove(i)
n = int(input())
for _ in range(n):
x, y, z = map(int,input().split())
if y == 3:
print(1)
exit()
check(x,y,z)
print(len(ans_lst))
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > -' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]19532๋ฒ: ์ํ์ ๋น๋๋ฉด๊ฐ์์ ๋๋ค (0) | 2023.05.17 |
---|---|
[๋ฐฑ์ค]1992๋ฒ: ์ฟผ๋ํธ๋ฆฌ (0) | 2023.05.15 |
[๋ฐฑ์ค]1018๋ฒ: ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2023.05.07 |
์ต์๊ณต๋ฐฐ์ ๋ฌธ์ (0) | 2023.04.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2023.04.03 |