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

[๋ฐฑ์ค€]2621๋ฒˆ: ์นด๋“œ๊ฒŒ์ž„

by syLim___ 2023. 5. 13.
728x90

https://www.acmicpc.net/problem/2621

 

2621๋ฒˆ: ์นด๋“œ๊ฒŒ์ž„

๊ทผ์šฐ๋Š” ์˜ค๋Š˜ ์žฌ๋ฏธ์žˆ๋Š” ์นด๋“œ ๊ฒŒ์ž„์„ ๋ฐฐ์šฐ๊ณ  ์žˆ๋‹ค. ์นด๋“œ๋Š” ๋นจ๊ฐ„์ƒ‰, ํŒŒ๋ž€์ƒ‰, ๋…ธ๋ž€์ƒ‰, ๋…น์ƒ‰์˜ ๋„ค ๊ฐ€์ง€ ์ƒ‰์ด ์žˆ๊ณ , ์ƒ‰๊น”๋ณ„๋กœ 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ์“ฐ์—ฌ์ง„ ์นด๋“œ๊ฐ€ 9์žฅ์”ฉ ์žˆ๋‹ค. ์นด๋“œ๋Š” ๋ชจ๋‘ 36(=4x9)์žฅ์ด๋‹ค.

www.acmicpc.net


ํ•˜ ์ด ๋ฌธ์ œ ์ •๋ง ์–ด์ง€๋Ÿฌ์› ๋‹ค...

๊ทธ๋ƒฅ ๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ์ธ๋ฐ ๋ฌธ์ œ๊ฐ€ ์•ˆ ์ฝํ˜€์„œ...

 

์•„๋ฌดํŠผ, ๊ทธ๋ƒฅ ํ•˜๋ผ๋Š”๋Œ€๋กœ ํ–ˆ๋‹ค.

 

์šฐ์„  ์ด ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, 5๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์—ฐ์†์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ˆซ์ž๋“ค์„ ์ •๋ ฌํ•ด์ฃผ์—ˆ๋‹ค.

๋˜, ์ฒ˜์Œ์—๋Š” Counter๋ฅผ ์“ธ๊นŒ ํ–ˆ์ง€๋งŒ ๊ดœํžˆ ๋” ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ, ๊ทธ๋ƒฅ 9์นธ์งœ๋ฆฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ 1~9๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ ๋‚˜์™”๋Š”์ง€ ๊ธฐ๋กํ•ด ๋‘์—ˆ๋‹ค.

 

๊ทœ์น™๋“ค์ด ์„œ๋กœ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด์„œ, ๊ทœ์น™ ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ์ข€ ๋” ํŽธํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ,

๊ดœํ•œ ์ง“ ํ–ˆ๋‹ค๊ฐ€ ๋ชจ๋ฅด๊ณ  ํ•œ ๊ฐœ์”ฉ ๋นผ๋จน๊ณ  ๋„˜์–ด๊ฐˆ๊นŒ๋ด

๊ทธ๋ƒฅ ์•ˆ์ „ํ•˜๊ฒŒ 1๋ฒˆ๋ถ€ํ„ฐ ์ญ‰ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

๋‚ด ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ ๊ฐ™์ง€๋Š” ์•Š์•„์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค ์ฝ”๋“œ๋ฅผ ๊ตฌ๊ฒฝํ•ด๋ดค๋Š”๋ฐ,

๋‹ค๋“ค ๊ทธ๋ƒฅ ํ•˜๋ผ๋Š”๋Œ€๋กœ ์ฐฉ์‹คํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์‹  ๊ฒƒ ๊ฐ™์•˜๋‹ค!!

 

 

python

color = []
number = []
ncnt = [0,0,0,0,0,0,0,0,0]

for _ in range(5):
  c, n = input().split()
  color.append(c)
  number.append(int(n))
  ncnt[int(n)-1] += 1
  
number.sort()
score = 0

# 1
flag = True # 5๊ฐœ ์ˆซ์ž๊ฐ€ ์—ฐ์†ํ•œ์ง€
for i in range(4):
  if number[i] + 1 != number[i+1]:
    flag = False
    break
if flag and len(set(color)) == 1:
  score = max(number) + 900

# 2
if 4 in ncnt:
  idx = 0
  for i in range(9):
    if ncnt[i] == 4:
      idx = i + 1
      break
  score = max(score, idx + 800)
# 3
two, three = 0, 0
for i in range(9):
  if ncnt[i] == 2:
    two = i + 1
  if ncnt[i] == 3:
    three = i + 1
if two > 0 and three > 0:
  score = max(score, three*10 + two + 700)

# 4
if len(set(color)) == 1:
  score = max(score, max(number) + 600)

# 5
if flag:
  score = max(score, max(number) + 500)

# 6
if three > 0:
  score = max(score, three + 400)

# 8
if two > 0:
  score = max(score, two + 200)

# 7
t1, t2 = 0, 0
for i in range(9):
  if ncnt[i] == 2:
    if t1 == 0:
      t1 = i + 1
    else:
      t2 = i + 1
if t1 > 0 and t2 > 0:
  score = max(score, t2 * 10 + t1 + 300)

# 9
if score == 0:
  score = max(number) + 100

print(score)

 

728x90