ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด Swift

[๋ฐฑ์ค€ 15734] ๋ช…์žฅ ๋‚จ์ •ํ›ˆ (Swift)

๋น„๋น„ bibi 2023. 2. 7. 16:45

15734๋ฒˆ: ๋ช…์žฅ ๋‚จ์ •ํ›ˆ

์™ผ๋ฐœ์žก์ด ์„ ์ˆ˜, ์˜ค๋ฅธ๋ฐœ์žก์ด ์„ ์ˆ˜, ์–‘๋ฐœ์žก์ด ์„ ์ˆ˜์˜ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ ์ฃผ์–ด์ง„๋‹ค.

์™ผ๋ฐœ์žก์ด ์„ ์ˆ˜์™€ ์˜ค๋ฅธ๋ฐœ์žก์ด ์„ ์ˆ˜์˜ ์ˆ˜๋ฅผ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ทธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

์ด๋•Œ ์–‘๋ฐœ์žก์ด ์„ ์ˆ˜๋Š” ์™ผ๋ฐœ์žก์ด ๋˜๋Š” ์˜ค๋ฅธ๋ฐœ์žก์ด๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์™ผ๋ฐœ์žก์ด์™€ ์˜ค๋ฅธ๋ฐœ์žก์ด ์„ ์ˆ˜์˜ ์ˆ˜๋ฅผ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๋ฉด์„œ ์ตœ๋Œ€๊ฐ€ ๋˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.

ํ’€์ด (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)