728x90
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
import Foundation
let N = Int(readLine()!)!
var queue = Array(1...N) // 이런 배열 형태는 처음봄.
var pointer = 0 // 포인터 만들기.
if N == 1 {print(1)} // card수가 1이면 그냥 1출력
else {
while true {
queue[pointer] = 0 // 맨 앞에 있는 카드 버리기.
queue.append(queue[pointer + 1]) // append 메서드 자체가 배열 끝에 추가하는 것이므로 카드를 맨 뒤로 보내는 것과 같다.
queue[pointer + 1] = 0 // 또 다시 카드 버리기.
if queue[queue.count - 2] == 0 {
print(queue.last!); break }
pointer += 2 // 카드는 두장씩 없어지니 2씩 넘어가야한다.
}
}
728x90
'PS' 카테고리의 다른 글
| 11050번 이항계수 1 / swift (0) | 2022.10.03 |
|---|---|
| 10828번 스택 / swift (0) | 2022.10.03 |
| 9012번 괄호 / swift (0) | 2022.10.02 |
| 2609 최대공약수와 최소공배수 / swift (0) | 2022.10.02 |
| 1920번 수 찾기 - swift (0) | 2022.09.30 |