[๋ฐฑ์ค 15734] ๋ช ์ฅ ๋จ์ ํ (Swift)
์ผ๋ฐ์ก์ด ์ ์, ์ค๋ฅธ๋ฐ์ก์ด ์ ์, ์๋ฐ์ก์ด ์ ์์ ์๊ฐ ๊ฐ๊ฐ ์ฃผ์ด์ง๋ค.
์ผ๋ฐ์ก์ด ์ ์์ ์ค๋ฅธ๋ฐ์ก์ด ์ ์์ ์๋ฅผ ๊ฐ๊ฒ ๋ง๋ค๊ณ , ๊ทธ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ .
์ด๋ ์๋ฐ์ก์ด ์ ์๋ ์ผ๋ฐ์ก์ด ๋๋ ์ค๋ฅธ๋ฐ์ก์ด๋ก ์ทจ๊ธํ ์ ์๋ค.
์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด ์ ์์ ์๋ฅผ ๊ฐ๊ฒ ๋ง๋ค๋ฉด์ ์ต๋๊ฐ ๋๊ฒ ํด์ผ ํ๋ค.
ํ์ด (1)
๋์ ํ์ด.
์ผ๋ฐ โ ์ค๋ฅธ๋ฐ ์ ๊ตํ์ด ๋์ง ์์ผ๋ฉฐ, ์ค์ง ์๋ฐ์ก์ด๋ง ์ผ๋ฐ/์ค๋ฅธ๋ฐ์ก์ด๋ก ๋ฐฐ์นํ ์ ์๋ค.
๋ฐ๋ผ์ ๋จ์์๋ ์๋ฐ์ก์ด์ ์๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ ํ์ธํ๋ค.
- ๋ง์ฝ ์ผ๋ฐ์ก์ด๊ฐ ์ค๋ฅธ๋ฐ์ก์ด๋ณด๋ค ๋ง๋ค๋ฉด, ์๋ฐ์ก์ด ํ๋ช ์ ์ผ๋ฐ์ก์ด๋ก ๋ณด๋ธ๋ค.
- ๋ง์ฝ ์ค๋ฅธ๋ฐ์ก์ด๊ฐ ์ผ๋ฐ์ก์ด๋ณด๋ค ๋ง๋ค๋ฉด, ์๋ฐ์ก์ด ํ๋ช ์ ์ค๋ฅธ๋ฐ์ก์ด๋ก ๋ณด๋ธ๋ค.
- ๋ง์ฝ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด์ ์๊ฐ ๊ฐ๊ณ , ์๋ฐ์ก์ด๊ฐ 2๋ช ์ด์์ด๋ผ๋ฉด, ์๋ฐ์ก์ด ๋๋ช ์ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด์ ํ๋ช ์ฉ ๋ณด๋ธ๋ค.
- ๋ง์ฝ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด์ ์๊ฐ ๊ฐ๊ณ , ์๋ฐ์ก์ด๊ฐ 1๋ช
์ด๋ผ๋ฉด, ๋ฐ๋ณต๋ฌธ์ ๋๋ธ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ ์ํด, ์๋ฐ์ก์ด์ ์๊ฐ 0์ผ ๋ ๋ฐ๋ณต๋ฌธ์ ํ์ถํ๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ ์๋ฐ์ก์ด์ ์๊ฐ 0์ด ์๋๋ฐ๋ ๋ ์ด์ ์ผ๋ฐ์ก์ด/์ค๋ฅธ๋ฐ์ก์ด์ ๋ฐฐ์นํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ๋ ํ์ถํ๊ฒ ํ๋ค.
๋ฐ๋ณต๋ฌธ์ ํตํด ์๋ฐ์ก์ด๋ค์ ๋ชจ๋ ๋ฐฐ์นํ ๋ค์์๋ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด์ ์๊ฐ ๊ฐ์ง ์์ ์ ์๋ค.
๋ฐ๋ผ์ ๋ต์ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด ์ค ์์ ์ชฝ์ 2๋ฐฐ๋ก ํ ๊ฐ์ผ๋ก ๊ตฌํ๋ค.
let inputArr = readLine()!.split(separator: " ").map { Int($0)! }
var left = inputArr[0]
var right = inputArr[1]
var both = inputArr[2]
while both > 0 {
if left > right {
both -= 1
right += 1
continue
}
if left < right {
both -= 1
left += 1
continue
}
if left == right && both >= 2 {
both -= 2
left += 1
right += 1
continue
}
if left == right && both == 1 {
break
}
}
print(min(left, right) * 2)
ํ์ด (2)
๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋ค ๋ณด๋ ๋ ๊ฐ๊ฒฐํ ํ์ด๊ฐ ์์ด์ ๊ฐ์ ธ์๋ค.
๋๋ ์ผ๋ฐ์ก์ด์ ์ค๋ฅธ๋ฐ์ก์ด๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ 2๊ฐ์ง๋ก ๋๋์ด ์ฒ๋ฆฌํ๋๋ฐ ์ด ํ์ด๋ ์ผ๋ฐ์ด๋ ์ค๋ฅธ๋ฐ ์ค ํ์ชฝ์ ๊ฐ๊ฑฐ๋ ํฐ ๊ฒฝ์ฐ์ ํฌํจํด ์ฒ๋ฆฌํ๋ค.
์ด๋ ๊ฒ ์ฒ๋ฆฌํด๋ ๋๋ ์ด์ ๋ ์ผ๋ฐ/์ค๋ฅธ๋ฐ ์ค ํ์ชฝ์ +1์ ํ๋ฉด, ๋ค์ ์ํ ๋ ์ด์ฐจํผ ๋ฐ๋์ชฝ์ด ๋ง์ถฐ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
์๊ฐ๋ณต์ก๋๋ ์ฒ์ ํ์ด์ ๋์ผํ๋ค. (8ms)
let inputArr = readLine()!.split(separator: " ").map { Int($0)! }
var left = inputArr[0]
var right = inputArr[1]
var both = inputArr[2]
while both != 0 {
if left <= right {
left += 1
both -= 1
continue
}
if left > right {
right += 1
both -= 1
continue
}
}
print(min(left, right) * 2)