๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ BOJ #1541

by seolhee2750 2021. 8. 18.
๋ฌธ์ œ ์„ค๋ช…

์„ธ์ค€์ด๋Š” ์–‘์ˆ˜์™€ +, -, ๊ทธ๋ฆฌ๊ณ  ๊ด„ํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ๋ชจ๋‘ ์ง€์› ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์‹์€ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ  ‘-’๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†ํ•ด์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , 5์ž๋ฆฌ๋ณด๋‹ค ๋งŽ์ด ์—ฐ์†๋˜๋Š” ์ˆซ์ž๋Š” ์—†๋‹ค. ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์‹์˜ ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์ž…๋ ฅ

55-50+40

์ถœ๋ ฅ

-35

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
import Foundation

var input = readLine()!.split(separator: "-").map({String($0)}) // "-" ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ  ๋ฐฐ์—ด ์ƒ์„ฑ
var sum = 0
var tmp = 0

for i in 0..<input.count {
    let n = input[i].split(separator: "+").map({Int(String($0))!}) // "+"๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‚˜๋ˆ„๊ธฐ
    for j in n { tmp += j } // "+"๋กœ ๋‚˜๋ˆˆ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ ๋”ํ•˜๊ธฐ
    
    if i == 0 { sum += tmp } // ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ๊ฒฝ์šฐ์—๋งŒ sum์— ๋”ํ•ด์ฃผ๊ธฐ
    else { sum -= tmp } // ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ์™ธ, "-"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— sum์—์„œ ๋นผ์ฃผ๊ธฐ
    tmp = 0 // tmp ์ดˆ๊ธฐํ™”
}

print(sum)

๐Ÿ‘‰ ๊ด„ํ˜ธ๋Š” ๋ฌด์กฐ๊ฑด "-" ๋’ค๋ถ€ํ„ฐ ๋‹ค์Œ "-"๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ๋ฌถ์–ด์ค˜์•ผ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ํฌ์ธํŠธ!

์˜ˆ๋ฅผ๋“ค์–ด, 55-50+40 ์˜ ๊ฒฝ์šฐ 55-(50+40) ์ด๋ ‡๊ฒŒ - ๋’ค์˜ ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ๋”ํ•ด์„œ ๋นผ์ฃผ๋ฉด ์ตœ์†Ÿ๊ฐ’,,!

  • "-"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ด„ํ˜ธ๋ฅผ ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ์„  "-"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ  input ๋ฐฐ์—ด์„ ์ƒ์„ฑํ–ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  input ๋ฐฐ์—ด์˜ ์š”์†Œ๋งˆ๋‹ค "+"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ๋‚˜๋ˆ  ๋ชจ๋“  ์š”์†Œ๋ฅผ Int๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ ๋”ํ–ˆ๋‹ค.
  • ์ฒซ "-"๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ๋‚˜์˜จ ์ˆซ์ž๋“ค์€ sum์— ๋”ํ•ด์ฃผ๊ณ ,
    "-"๊ฐ€ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‚˜์˜จ ์ดํ›„์—๋Š” ๊ณ„์† ๋”ํ•œ ์ˆ˜๋“ค์„ sum์—์„œ ๋นผ์ฃผ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๊ด„ํ˜ธ๋ฅผ ๋„ฃ์–ด์ค„ ์œ„์น˜๋งŒ ํ™•์ธํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 


 

๋ฌธ์ œ

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

๋Œ“๊ธ€