λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/BOJ

[BOJ] ν•™μƒλ²ˆν˜Έ (#1235)

 

문제 

 

μ΄λ²ˆμ—λŠ” 학생듀을 λ”μš± 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ ν•™μƒλ§ˆλ‹€ κ³ μœ ν•œ 학생 번호λ₯Ό λΆ€μ—¬ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€. 학생 λ²ˆν˜ΈλŠ” 0λΆ€ν„° 9 μ‚¬μ΄μ˜ 숫자둜 이루어진 λ¬Έμžμ—΄λ‘œ, λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 λ²ˆν˜ΈλŠ” μ„œλ‘œ λ‹€λ₯΄μ§€λ§Œ κ·Έ κΈΈμ΄λŠ” λͺ¨λ‘ κ°™λ‹€.

ν•™μƒλ“€μ˜ 번호λ₯Ό λΆ€μ—¬ν•΄ 놓고 λ³΄λ‹ˆ, κΉ€μ§„μ˜ μ‘°κ΅λŠ” μ–΄μ©Œλ©΄ λ²ˆν˜Έκ°€ μ§€λ‚˜μΉ˜κ²Œ κΈ΄ 것은 μ•„λ‹Œκ°€ 싢은 생각이 λ“€μ—ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ•„λž˜μ™€ 같은 7자리의 학생 번호λ₯Ό 보자.

μ΄λ¦„λ²ˆν˜Έ

μ˜€λ―Όμ‹ 1212345
κΉ€ν˜•νƒ 1212356
μ΄λ™ν˜Έ 0033445

이처럼 학생 번호λ₯Ό ꡳ이 7자리둜 ν•˜μ§€ μ•Šκ³ , λ’€μ—μ„œ μ„Έ μžλ¦¬λ§Œμ„ μΆ”λ €μ„œ 남겨 놓아도 λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 번호λ₯Ό μ„œλ‘œ λ‹€λ₯΄κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

μ΄λ¦„λ²ˆν˜Έ

μ˜€λ―Όμ‹ 345
κΉ€ν˜•νƒ 356
μ΄λ™ν˜Έ 445

ν•˜μ§€λ§Œ μ„Έ μžλ¦¬λ³΄λ‹€ 적게 남겨 λ†“μ•„μ„œλŠ” λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 번호λ₯Ό μ„œλ‘œ λ‹€λ₯΄κ²Œ λ§Œλ“€ 수 μ—†λ‹€.

ν•™μƒλ“€μ˜ λ²ˆν˜Έκ°€ μ£Όμ–΄ μ‘Œμ„ λ•Œ, λ’€μ—μ„œ kμžλ¦¬λ§Œμ„ μΆ”λ €μ„œ 남겨 λ†“μ•˜μ„ λ•Œ λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 번호λ₯Ό μ„œλ‘œ λ‹€λ₯΄κ²Œ λ§Œλ“€ 수 μžˆλŠ” μ΅œμ†Œμ˜ kλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

 

μž…λ ₯ 

 

첫째 μ€„μ—λŠ” ν•™μƒμ˜ 수 N(2≤N≤1,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 걸쳐 각 ν•™μƒμ˜ 학생 λ²ˆν˜Έκ°€ μˆœμ„œλŒ€λ‘œ 주어진닀. λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 λ²ˆν˜ΈλŠ” μ„œλ‘œ λ‹€λ₯΄μ§€λ§Œ κ·Έ κΈΈμ΄λŠ” λͺ¨λ‘ κ°™μœΌλ©°, 0λΆ€ν„° 9 μ‚¬μ΄μ˜ 숫자둜 이루어진 λ¬Έμžμ—΄μ΄ 주어진닀. λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” 100보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

 

 

좜λ ₯ 

 

첫째 쀄에 κ΅¬ν•˜κ³ μž ν•˜λŠ” κ°€μž₯ μž‘μ€ k값을 좜λ ₯ν•œλ‹€.

 

 

 

ν•΄μ„€ μ½”λ“œ 
n = int(input())
s = [input()for _ in [0]*n]
k = 1
while 1:
  if len({i[-k:]for i in s}) == n:
    print(k)
    break
  k += 1
뢄석 > 일단 이 μ½”λ“œλ₯Ό 톡해 μƒˆλ‘­κ²Œ μ•Œκ²Œλœ κ°œλ…μ€ λ¬Έμžμ—΄ μŠ¬λΌμ΄μ‹±μ„ λ’€μ—μ„œλΆ€ν„° ν•  수 μžˆλ‹€λŠ” μ μ΄μ—ˆλ‹€. λ’€μ—μ„œλΆ€ν„° μŠ¬λΌμ΄μ‹±μ„ ν•  수 μžˆλ‹€λŠ” 것을 λͺ°λΌμ„œ ν—€λ§Έμ—ˆλŠ”λ°, μŒμˆ˜ν˜•νƒœλ‘œ μŠ¬λΌμ΄μ‹±μ„ ν•˜κ²Œ 되면 λ’€μ—μ„œλΆ€ν„° μŠ¬λΌμ΄μ‹±μ΄ λ˜λŠ” κ²ƒμ΄μ—ˆλ‹€. 그리고 또 μƒˆλ‘­κ²Œ μ•Œκ²Œ 된 κ°œλ…μ€ { } 을 톡해 set 배열을 λ§Œλ“€ 수 μžˆλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€. κ·ΈλŸ¬κΈ°μ— 이 λ¬Έμ œλŠ” μž…λ ₯된 λ¬Έμžμ—΄ 배열을 λ’€μ—μ„œλΆ€ν„° λΉ„κ΅ν•˜λ©΄μ„œ { } λ°°μ—΄μ˜ μ›μ†Œμ˜ κ°œμˆ˜κ°€ 3κ°œκ°€ 될 λ•ŒκΉŒμ§€ (즉, 이 μ„Έ λ¬Έμžμ—΄μ΄ 각기 λ‹€λ₯Έ λ¬Έμžμ—΄μ΄ 될 λ•ŒκΉŒμ§€) 비ꡐλ₯Ό ν•˜λŠ” 것이 μ€‘μš” ν¬μΈνŠΈμ˜€λ‹€. 

 

 

 

1235번: 학생 번호

첫째 μ€„μ—λŠ” ν•™μƒμ˜ 수 N(2≤N≤1,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 걸쳐 각 ν•™μƒμ˜ 학생 λ²ˆν˜Έκ°€ μˆœμ„œλŒ€λ‘œ 주어진닀. λͺ¨λ“  ν•™μƒλ“€μ˜ 학생 λ²ˆν˜ΈλŠ” μ„œλ‘œ λ‹€λ₯΄μ§€λ§Œ κ·Έ κΈΈμ΄λŠ” λͺ¨λ‘ κ°™μœΌλ©°, 0λΆ€

www.acmicpc.net