λ°±μ€€ - μˆ˜λ“€μ˜ ν•©(Swift)

2022. 10. 23. 18:19ㆍAlgorithm

λ°±μ€€ - μˆ˜λ“€μ˜ ν•©(Swift)

 

 

 λ¬Έμ œ μ„€λͺ…

 

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

 

1789번: μˆ˜λ“€μ˜ ν•©

첫째 쀄에 μžμ—°μˆ˜ S(1 ≤ S ≤ 4,294,967,295)κ°€ 주어진닀.

www.acmicpc.net

 

 λ‚˜μ˜ 풀이

 

μ„œλ‘œ λ‹€λ₯Έ N개의 μžμ—°μˆ˜μ˜ 합이 S라고 ν•œλ‹€. Sλ₯Ό μ•Œ λ•Œ, μžμ—°μˆ˜ N의 μ΅œλŒ“κ°’μ€ μ–Όλ§ˆμΌκΉŒ?

 

μ²˜μŒμ— 이 말을 μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ³  계속 ν—›λŒμ•˜λ‹€. N개의 μžμ—°μˆ˜μΈλ° μžμ—°μˆ˜ N의 μ΅œλŒ“κ°’μ„ μ–Όλ§ˆμΈμ§€ λ¬»λŠ” 것은 κ²°κ΅­ κ°œμˆ˜κ°€ μ΅œλŒ€κ°€ 될 λ•Œ λͺ‡κ°œμΈμ§€λ₯Ό κ΅¬ν•˜λŠ” κ²ƒμ΄μ˜€λ‹€.

 

N이 μ΅œλŒ€κ°œμˆ˜κ°€ λ˜λŠ” 것은 N개의 μžμ—°μˆ˜λ“€μ„ μ΅œλŒ€ν•œ λ‹€μ–‘ν•˜κ²Œ μ‘°ν•©ν•΄μ•Όν•œλ‹€λŠ” 것이닀. 즉 1+2+3+4처럼 μˆœμ„œλŒ€λ‘œ ν•˜λŠ” 것이 제일 μ΅œλŒ€κ°€ λ˜κ²Œν•˜λŠ” 방법인 것이닀.

 

μ˜ˆμ‹œλ‘œ 8μ΄λΌλŠ” μˆ«μžκ°€ 주어진닀면 1λΆ€ν„° κ³„μ†λ”ν•΄μ„œ 1+2+3이 되고 1+2+3+4κ°€ λ˜λŠ” μ‹œμ μ—λŠ” 8을 λ„˜μ–΄μ„œκ²Œ λœλ‹€. κ·Έλž˜μ„œ 4κ°€μ§€μ˜ κ²½μš°λ³΄λ‹€ μž‘μ€ 3κ°€μ§€μ˜ 경우둜 8을 λ§Œλ“œλ €λ©΄ 1+2+5κ°€ 되고 κ²°κ΅­ 3가지가 닡이 λœλ‹€.

 

κ·Έλž˜μ„œ sum을 1λΆ€ν„° 계속 λ”ν•˜λ©΄μ„œ κ΅¬ν•œ 값보닀 κ°™κ±°λ‚˜ μ»€μ§€λŠ” μ‹œμ μ΄ N이 μ΅œλŒ€κ°€ λ˜λŠ” μ‹œμ μ΄λ‹€.

 

import Foundation

let n = Int(readLine()!)!
var sum = 0
var idx = 1
var cnt = 0
while sum < n {
    sum += idx
    idx += 1
    cnt += 1
}
if sum == n {
    print(cnt)
} else {
    print(cnt-1)
}

 

'Algorithm' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

λ°±μ€€ - 30(Swift)  (0) 2022.10.24
λ°±μ€€ - μ£Όμœ μ†Œ(Swift)  (0) 2022.10.24
λ°±μ€€ - μ „μžλ ˆμΈμ§€(Swift)  (0) 2022.10.23
λ°±μ€€ - λ‘œν”„(Swift)  (0) 2022.10.23
λ°±μ€€ - κ±°μŠ€λ¦„λˆ(Swift)  (0) 2022.10.23