문제 출처: 백준 10828번 스택

문제


스크린샷 2022-07-20 오후 3 06 07

풀이


명령어를 입력받아 조건에 맞게 출력을 해주면 되는 간단한 문제인데요. if 문으로도 풀 수 있지만 case 문을 통해 좀 더 가독성 있게 풀어봤습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/// 명령의 수
let N = Int(readLine()!)!
/// 스택 역할을 할 String배열
var stack: [String] = []

// N만큼 반복
for _ in 0..<N {
  let line = readLine()!.split(separator: " ")
  
  // 명령어에 따른 이벤트 처리
  switch line[0] {
  case "push":
    stack.append(String(line[1]))
  case "pop":
    print(stack.popLast() ?? -1)
  case "size":
    print(stack.count)
  case "empty":
    print(stack.isEmpty ? 1 : 0)
  case "top":
    print(stack.last ?? -1)
  default: break
  }
}
  1. 명령의 수를 입력받습니다.
  2. 입력받은 명령의 수 만큼 반복문을 실행합니다.
  3. 명령어를 입력받아 case 문을 이용해 동작을 처리합니다.

popLast, last의 경우 해당 배열이 비어있을 경우 nil을 반환하기 때문에 삼항연잔사를 통해 값을 출력합니다.

이렇게 풀 경우 메모리: 69104 KB, 시간: 24 ms 결과가 나오게 됩니다.

업데이트:

댓글남기기