티스토리 뷰

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net


문제 요약

  • 스택에 1부터 n까지의 수를 push 함과 동시에 pop 연산을 적절히 사용해 원하는 수열을 만드는 문제
  • push는 +로 pop은 -로 print하자.

 

풀이 

  • 수열을 이루는 수(=input)를 입력할때 그 수는 스택에 존재해야 한다.
  • input을 입력 했을때 1부터 input까지 스택에 push 한다.
  • 스택의 마지막 수가 input과 같을 경우에 pop 연산을 수행한다.
  • pop연산을 수행할 수 없을 경우에는 수열을 만들지 못하는 경우이므로 NO 출력
//
//  main.swift
//  Algorithm Swift
//  BaekJoon
//  1874 - 스택 수열

import Foundation

let n = Int(readLine()!)!

var stack: [Int] = []
var result: [String] = []
var num = 1

for _ in 0..<n {
    let input = Int(readLine()!)!
    
    while num <= input {
        stack.append(num)
        result.append("+")
        num += 1
    }
    
    if stack.last == input {
        stack.removeLast()
        result.append("-")
    } else {
        print("NO")
        exit(0)
    }
}

print(result.joined(separator: "\n"))

'Algorithm > 백준' 카테고리의 다른 글

[BOJ] (Swift) 10845 - 큐  (0) 2022.08.01
[BOJ] (Swift) 1406 - 에디터  (0) 2022.08.01
[BOJ] (Swift) 9012 - 괄호  (0) 2022.07.28
[BOJ] (Swift) 9093 - 단어 뒤집기  (0) 2022.07.28
[BOJ] (Swift) 10828 - 스택  (0) 2022.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함