반응형
문제
https://www.acmicpc.net/problem/11866
풀이
이 문제는 Queue를 사용해서 풀 수도 있고, index를 순회하면서 풀 수도 있습니다.
Queue를 사용해서 풀이하면,
K-1번 만큼 Queue에서 삭제한 요소를 Queue에 삽입시켜주고
K번째가 될 때, Queue에서 삭제연산을 해주면 K번째 요소를 제거할 수 있습니다.
이 동작을 queue가 빌 때 까지 반복해주면 됩니다.
index로 접근은 어떻게 할까요?
초기값은 0번째 인덱스를 가리키고 있고,
index에 k - 1을 더해준 위치의 요소를 제거해주면 됩니다.
여기서 왜 k가 아닌 k - 1인가..에 대해 설명드리자면,
array에서 삭제 연산을 하게되면 array의 크기가 1이 줄어들기 때문에 k가 아닌 k - 1을 더해줬습니다.
또한 index가 array의 범위를 벗어날 수 있기 때문에 더해줄 때 마다,
array의 크기만큼의 mod 연산을 해주었습니다.
소스코드
후기
Queue를 사용하거나 index로 제거하는 방식으로 풀 수 있는 문제였습니다.
Queue를 사용했을 때, K가 크다면 삭제 연산을 하는 횟수가 많으므로 index를 사용하는 것이 조금 더 빠른 것 같습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 10866 덱 (Swift) (0) | 2023.04.04 |
---|---|
[BOJ] 백준 1966 프린터 큐 (Swift) (0) | 2023.04.04 |
[BOJ] 백준 2164 카드 2 (Swift) (0) | 2023.04.03 |
[BOJ] 백준 18258 큐 2 (Swift) (0) | 2023.04.03 |
[BOJ] 백준 1874 스택 수열 (Swift) (0) | 2023.04.03 |