[๋ฐฑ์ค] (Swift) 1783๋ฒ - ๋ณ๋ ๋์ดํธ
๐ ๋ฌธ์
https://www.acmicpc.net/problem/1783
1783๋ฒ: ๋ณ๋ ๋์ดํธ
์ฒซ์งธ ์ค์ ์ฒด์คํ์ ์ธ๋ก ๊ธธ์ด N์ ๊ฐ๋ก ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 2,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
www.acmicpc.net
๐ ๋์ ํ์ด
์ฒ์์ ์กฐ๊ธ ํค๋งธ๋ค. ์ค๋ฒ3์ธ๋ฐ ... ์์ด๋ฌ์ง? ํ๋จผ์ ํํ๊ฐ ์์๊ณ ,,, ์ ๊น ํํธ๋ฅผ ์ฐพ์๋ณด๋ ๊ทธ๋ฅ ๊ท์น์ ์ฐพ์๋ด๋ฉด ๋๋ค...? ๊ทธ๋ฆฌ๋๋ผ๊ณ ํด์ ๋๋ฌด ์ํ์ ์ผ๋ก ์ด๋ป๊ฒ๋ ์ฐพ์๋ณด๋ ค๊ณ ํ๋ค....
๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด์ ์๊ฐํด๋ณด๋๊น, N์ ๊ธธ์ด์ M์ ๊ธธ์ด์ ๋ฐ๋ผ์ ์ต๋ ๊ฐ ์ ์๋ ์นธ์ ์๊ฐ ์ ํด์ ธ์์๋ค. ์๋๋ฉด, 4๋ฒ ์ด์์ ์์ง์ด๊ธฐ ์ํด์๋ ์ต์ 4๊ฐ์ ๋ฐฉํฅ์ ํ๋ฐฉ์์ ๋ชจ๋ ์ฌ์ฉํด์ผํ๊ณ , ๊ทธ๋์ ํ๋๊ฐ์ง์ ์ด๋๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋, ์ต๋ 3๋ฒ๊น์ง๋ฐ์ ๋ชป์์ง์ด๊ธฐ ๋๋ฌธ์ด๋ค.
1. N=1 ์ธ ๊ฒฝ์ฐ์๋ ์๋ฌด๋ฐ๋ ์์ง์ผ์๊ฐ ์๋ค. ์ฆ, ์ฒ์ ๋์ฐฉํ ๊ทธ๊ณณ์ด ๋ฐฉ๋ฌธํ ์นธ์์ด๋ค. ๋ฑ ํ์นธ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ๋ค.
2. N = 2์ธ ๊ฒฝ์ฐ์๋, 2๋ฒ๊ณผ 3๋ฒ ๋ฐฉํฅํค๋ง ์ฌ์ฉํ ์ ์๋ค. (์์๋๋ก ํ์นธ์ฉ๋ง ์ด๋๊ฐ๋ฅํ๋ค๋ ๋ป.)
๊ทผ๋ฐ ๋, ๋ฌดํ๋๋ก ์์ง์ผ ์ ์๊ณ , ๋๊ฐ์ง์ ๋ฐฉํฅํค๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต๋ 3๋ฒ๋ง ์์ง์ผ ์ ์๋ค.
๊ทธ๋ฆผ์ ์ด๋ ๊ฒ ๊ทธ๋ ธ๋ค. 3๋ฒ ์์ง์ผ ์ ์์ง๋ง, ์ด๊ฒ๋ M์ด 5์ด์์ด์ด์ผํ๋ค. ๊ทธ๋ ๋ค๋ฉด,, N=2๋ผ๋ฉด, ์ต๋๋ก ๊ฐ ์ ์๋ 4์นธ๊ณผ ์ ๋ ฅ๋ฐ์ M ์ฌ์ด์์ ๊ท์น์ ์ฐพ์์ผํ๋ค. ๊ทธ ์ฐพ์ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
min( 4, (M+1)/2 )
M์ด 2๋ผ๋ฉด ์์ง์ด๋ ์ต๋ ์๋ 4๋ฐ์ ์๋๊ณ , M์ด 7๋ณด๋ค ์์ผ๋ฉด 4๋ณด๋ค ๊ทธ ์ดํ์ ์๋ฅผ ์ ํํด์ผํ๊ณ , M์ด 7๋ณด๋ค ํฐ ์๋ฅผ ์ ๋ ฅ๋ฐ๊ฒ ๋๋ฉด ์๋ฌด๋ฆฌ ์ปค๋ 4๋ง ์ ํํ ์ ์๋ค. ๊ทธ๋์ ์ต์๊ฐ์ 4์ ๋น๊ตํด์ ๋ฃ์ด์ค๋ค.
3. N = 3์ธ๊ฒฝ์ฐ
์ด๋๋ 1๋ฒ๊ณผ 4๋ฒ ๋ฐฉํฅํค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ์ด๋ง๋ค ๋ฐฉ๋ฌธํ ์ ์๋ค. ์ฆ M๋งํผ ์์ง์ผ ์ ์๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋, 1๊ณผ 4๋ฒ๋ฐฉํฅํค๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต๋ ์์ง์ผ ์ ์๋ ์นธ์๋ 4๋ก ์ ํด์ ธ์๋ค.
์ฌ๊ธฐ์ ์กฐ๊ฑด๋ฌธ์ ์๊ฐํ๋๋ฐ ์กฐ๊ธ ์ ๋ฅผ ๋จน์๋ค. ์ผ๋จ ๋ค์ ์กฐ๊ฑด๋ถํฐ ๋ณด๊ณ ์ ๋ฆฌํด๋ณด์.
4. ๋ชจ๋ ๋ฐฉํฅํค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ M์ด ๋ฌด์กฐ๊ฑด 7์ด์์ด์ด์ผํ๋ค.
๋ชจ๋ ๋ฐฉํฅํค๋ฅผ ํ๋ฒ์ฉ ์ฌ์ฉํ๊ธฐ ์ํด์๋, ๊ฐ๋ก๊ธธ์ด๊ฐ 7์ด์์ผ๋ก ๊ธธ์ด์ ธ์ผํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด, ๋ฐฉํฅํค๋ 3๋ฒ์ดํ๋ก ์ฌ์ฉํ ์ ๋ฐ์ ์๊ณ , ์ง๊ธ๊น์ง ์์ฑํ ์์ ์กฐ๊ฑด๋ค์ ๋ถํฉํ๊ฒ ๋ ๊ฒ์ด๋ค.
๋ง์ฝ M์ด 7์ดํ์ด๋ฉด, ๊ฐ ์ด๋ง๋ค ๋ฐฉ๋ฌธํ๋ ๋ฐฉ์์ด ์ต๋์ผ๊ฒ์ด๋ค. (1 4 1, 4 1 4 ์ด๋ ๊ฒ ๋ฐฉํฅํค๋ฅผ ์ฌ์ฉํด์ 4์นธ์ ๋ฐฉ๋ฌธํ๋๊ฒ ์ต๋๊ฒ ์ง)
๊ทธ๋์ ์ฌ๊ธฐ์๋ min์ ํ์ฉํด์ 3๋ฒ๊ณผ ํฉ์ณ์ง ์กฐ๊ฑด์ ์ค ์ ์๋ค. (n==3์ธ ๊ฒฝ์ฐ๋, ๊ฒฐ๊ตญ์ M<7 ์ธ ์กฐ๊ฑด๊ณผ ๊ฐ๋ค. ์ด๋ง๋ค ๋ฐฉ๋ฌธํ๋ ๊ฑฐ๋๊น!)
min( 4, M)
5. ์ด ๋ชจ๋ ์กฐ๊ฑด์ ๋น๊ฒจ๋๊ฐ๋ค๋ฉด, ์ด๋ป๊ฒ ๋ ๊น?
๊ฒฐ๊ตญ ๋ค๊ฐ์ง์ ๋ฐฉํฅํค๋ ์ ๋ถ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ ํฅํ๊ฒ ๋์ด์๋ค. ๋ชจ๋ ๋ฐฉํฅํค๋ฅผ ์ฌ์ฉํ๊ณ , ํ๊ฐ์ง ๋ฐฉํฅํค๋ง ๋ฌดํ๋๋ก ์ฌ์ฉํด์ ๋ฌดํ๋๋ก ๋ด๋ ค๊ฐ๋ค๊ณ ์ณ๋, ๊ฐ ์ด๋ง๋ค ํ์นธ์ฉ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ตญ,, 4๊ฐ์ง์ ๋ฐฉํฅํค๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ต๋์นธ์ 5์๋ค๊ฐ, M-7์ด๋งํผ ์นธ์๋ฅผ ์ด๋ํ ์ ์๋ค. (7์ ๋นผ์ฃผ๋ ์ด์ ๋, 7์ด๊ธฐ์ค์ผ๋ก 5์นธ์ ์ด๋ํ๊ธฐ ๋๋ฌธ์, ๋จ์ ์ด๋ง๋ค ๋ฐฉ๋ฌธํ๋ ํ์๋ฅผ ๋ํด์ฃผ๋ ๊ฒ์ด๋ค.)
์,, ์๊ฐ๋ณด๋ค ๊ฐ๋จํ ๋ฌธ์ ๋ฐ, ์ด๊ฒ ์ค๋ช ํ๊ณ ์๊ฐํ๋๋ฐ ์๊ทผํ ์ ๋ฅผ ๋จน์๋ ๋ฌธ์ ๋ค. ์๊ฐ๋ง ์ ํด๋์ผ๋ฉด ์ฝ๋๋ ์ง์ง ๊ฐ๋จํ๋ฐ ๋ง์ด๋ค.... ์ด ๊ณผ์ ์ ์๊ฐํด๋ด๊ณ , ์กฐ๊ฑด๋ฌธ์ ๊ฐ๋จํ๊ฒ, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์์ธ์ฌํญ์ ๋ค๋ด์ ์ ์๋๋ก ์ถ๋ ค๋ด๋๊ฒ ๊ด๊ฑด์ด์๋ค. ์ด๋ ค์ ๋ค.. ์ค๋ฒ3์ฃผ์ ์..! ํ..
๐ ์ ๋ต์ฝ๋
import Foundation
let nm = readLine()!.split(separator: " ").map{ Int($0)! }
let n = nm[0]
let m = nm[1]
private func solution(_ n: Int, _ m: Int) {
if n == 1 {
print(1)
} else if n == 2 {
print(min(4, (m+1)/2))
} else if m < 7 {
print(min(4, m))
} else {
print(m-2)
}
}
solution(n, m)