λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Problem Solving

[Swift Algorithm] 방 번호 BOJ #1475

by seolhee2750 2021. 7. 30.
문제 μ„€λͺ…

λ‹€μ†œμ΄λŠ” μ€μ§„μ΄μ˜ μ˜†μ§‘μ— μƒˆλ‘œ 이사왔닀. λ‹€μ†œμ΄λŠ” 자기 λ°© 번호λ₯Ό 예쁜 ν”ŒλΌμŠ€ν‹± 숫자둜 문에 뢙이렀고 ν•œλ‹€.

λ‹€μ†œμ΄μ˜ μ˜†μ§‘μ—μ„œλŠ” ν”ŒλΌμŠ€ν‹± 숫자λ₯Ό ν•œ μ„ΈνŠΈλ‘œ νŒλ‹€. ν•œ μ„ΈνŠΈμ—λŠ” 0λ²ˆλΆ€ν„° 9λ²ˆκΉŒμ§€ μˆ«μžκ°€ ν•˜λ‚˜μ”© λ“€μ–΄μžˆλ‹€. λ‹€μ†œμ΄μ˜ λ°© λ²ˆν˜Έκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, ν•„μš”ν•œ μ„ΈνŠΈμ˜ 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•˜μ‹œμ˜€. (6은 9λ₯Ό λ’€μ§‘μ–΄μ„œ μ΄μš©ν•  수 있고, 9λŠ” 6을 λ’€μ§‘μ–΄μ„œ μ΄μš©ν•  수 μžˆλ‹€.)

 

μž…λ ₯

첫째 쀄에 λ‹€μ†œμ΄μ˜ λ°© 번호 N이 주어진닀. N은 1,000,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜ λ˜λŠ” 0이닀.

 

좜λ ₯

첫째 쀄에 ν•„μš”ν•œ μ„ΈνŠΈμ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

μž…μΆœλ ₯ 예제

μž…λ ₯

9999

좜λ ₯

2

 

λ‚΄ 문제 풀이
import Foundation

let input = readLine()!
var num = Array(repeating: 0, count: 10)

for i in input {
    num[Int(String(i))!] += 1
}

num[9] += num[6]
num[6] = 0

if num.firstIndex(of: num.max()!) == 9 {
    print((num[9] / 2) + (num[9] % 2))
}
else { print(num.max()!) }
  • 0λΆ€ν„° 9κΉŒμ§€ 담을 수 μžˆλŠ” λ°°μ—΄ num을 μƒμ„±ν–ˆλ‹€.
  • forλ¬Έμ—μ„œ, μž…λ ₯받은 μˆ«μžλ“€μ„ μˆœμ„œλŒ€λ‘œ κ²€μ‚¬ν•˜λ©° num λ°°μ—΄μ˜ ν•΄λ‹Ή μœ„μΉ˜μ— +1 ν–ˆλ‹€.
    (ex. 숫자 9λŠ” num[9], 숫자 5λŠ” num[5])
  • 9와 6은 μ„œλ‘œλ₯Ό λŒ€μ²΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ—, num[9]에 두 수의 개수λ₯Ό ν•©μ³€λ‹€.
  • num λ°°μ—΄μ˜ κ°€μž₯ 큰 μˆ˜κ°€ 9라면, ν•œ μ„ΈνŠΈμ—μ„œ 6, 9 두 개둜 9λ₯Ό λ§Œλ“€ 수 있기 λ•Œλ¬Έμ—
    9의 개수λ₯Ό 2둜 λ‚˜λˆ„κ³  κ·Έ λ‚˜λ¨Έμ§€λ₯Ό λ”ν•΄μ„œ κ²°κ³Όλ₯Ό 좜λ ₯ν–ˆλ‹€.
  • κ°€μž₯ 큰 μˆ˜κ°€ 9κ°€ 아닐 κ²½μš°μ—λŠ” 제일 큰 숫자만큼의 μ„ΈνŠΈκ°€ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ—
    ν•΄λ‹Ή 숫자만큼의 μ„ΈνŠΈ 수λ₯Ό 결과둜 좜λ ₯ν–ˆλ‹€.

 

πŸ’‘ ν”Όλ“œλ°±
  • 6, 9κ°€ μ„œλ‘œλ₯Ό λŒ€μ²΄ν•  수 μžˆλ‹€λŠ” 점만 κ³ λ €ν•œλ‹€λ©΄ μ‰¬μš΄ λ¬Έμ œμ˜€λ‹€.

 


 

문제

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

λŒ“κΈ€