문제 링크
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
문제 풀이
나의 풀이
import Foundation
let N = Int(readLine()!)!
var quene = Array(1...N)
var n = 0
if N == 1 { print(1) }
else {
while true {
quene[n] = 0
quene.append(quene[n+1])
quene[n+1] = 0
if quene[quene.count-2] == 0 {
print(quene.last!)
break
}
n += 2
}
}
풀이 과정
처음에는 이렇게 풀었었다. 결과는 잘 나왔지만 시간초과가 나왔다. 배열을 삭제하는 과정에서 배열의 성분이 하나하나 옮겨지기 때문에 시간초과가 나온 것 같다. remove
가 문제인듯! (이부분은 좀더 공부가 필요하다)
import Foundation
let N = Int(readLine()!)!
var array = Array(1...N)
while array.count != 1 {
array.remove(at: 0)
array.append(array[0])
array.remove(at: 0)
}
print(array[0])
그래서 어떻게하면 remove
를 안쓸 수 있을까 고민하다가... 그러면 다른값으로 대체하면 되지 않을까? 해서 0으로 대체한 후 앞자리가 0일경우 print
하면서 break
할 수 있게 만들었다.
import Foundation
let N = Int(readLine()!)!
var quene = Array(1...N)
var n = 0
if N == 1 { print(1) }
else {
while true {
quene[n] = 0
quene.append(quene[n+1])
quene[n+1] = 0
if quene[quene.count-2] == 0 {
print(quene.last!)
break
}
n += 2
}
}
'Swift > Swift Codingtest' 카테고리의 다른 글
[Swift] 백준 5618 공약수 (0) | 2023.04.06 |
---|---|
[Swift] 백준 14425번 문자열 집합 (0) | 2023.04.05 |
[Swift] 백준풀이를 위한 Queue (0) | 2023.04.05 |
[Swift] 백준 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2023.04.04 |
[Swift] 백준 1158 요세푸스 문제 (0) | 2023.03.25 |