Description
Code
package main
import (
"bufio"
"fmt"
"os"
)
var (
sc = bufio.NewReader(os.Stdin)
wr = bufio.NewWriter(os.Stdout)
Queue []int
)
// 정수 X를 큐에 넣음
func push(x int) {
Queue = append(Queue, x)
}
// 큐에 가장 앞에 있는 정수를 빼고, 그 수를 출력
func pop() int {
if len(Queue) == 0 {
return -1
}
ret := Queue[0]
Queue = Queue[1:]
return ret
}
// 큐의 정수 개수 출력
func size() int {
return len(Queue)
}
// 큐의 공백 확인
func empty() int {
if len(Queue) == 0 {
return 1
}
return 0
}
// 큐의 가장 앞 있는 정수를 출력
func front() int {
if len(Queue) == 0 {
return -1
}
return Queue[0]
}
// 큐의 가장 뒤에 있는 정수를 출력
func back() int {
if len(Queue) == 0 {
return -1
}
return Queue[len(Queue) - 1]
}
func main() {
defer wr.Flush()
var N, K int
fmt.Fscanln(sc, &N, &K)
// N 개의 배열
for i := 1; i <= N; i+= 1 {
push(i)
}
fmt.Fprint(wr, "<")
for len(Queue) > 0 {
for i := 0; i < K - 1; i++ {
push(pop())
}
fmt.Fprint(wr, front())
if len(Queue) != 1 {
fmt.Fprint(wr, ", ")
}
pop()
}
fmt.Fprint(wr, ">")
return
}
- 문제 정의:
1부터 N까지의 사람들이 원형으로 앉아 있음.- K번째 사람을 제거하는 과정을 반복하며, 최종적으로 제거된 순서를 출력.
- 큐 초기화:
- 1부터 N까지의 숫자를 큐에 차례로 삽입.
- K번째 제거:
- 앞에서 K-1개의 정수를 pop()하여 다시 push()함.
- K번째 정수를 제거하고 결과에 저장.
- 결과 출력:
- <와 >로 묶어 최종적으로 제거된 순서를 출력.
- 숫자 간에는 , 로 구분.
'leetcode , 백준' 카테고리의 다른 글
[Go] 2346 풍선 터뜨리기 (0) | 2025.01.08 |
---|---|
[Go] 28279 덱 2 (0) | 2025.01.07 |
[Go] 18258 큐 2 (0) | 2025.01.03 |
[Go] 4949 균형잡힌 세상 (0) | 2025.01.03 |
[Go] 10773 제로 (0) | 2025.01.03 |