๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[๋ฐฑ์ค€]2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ

by syLim___ 2023. 5. 9.
728x90

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))
728x90