Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- IaC
- fcm
- SageMaker
- serverless
- aws
- CHECK
- kubernetes
- Lamda
- Validation
- terraform
- amazonqcli
- sns
- 병목
- lambda
- rds
- cloudwatch
Archives
- Today
- Total
잡다한 IT 지식
Find the Winner of the Circular Game 본문
시계 방향으로 원에 n만큼 사람이 있음.
처음 인덱스에서 시작해서 k번째 인덱스를 삭제함.
삭제한 인덱스에서 k번째 사람을 또 삭제함.
1명 남을 때까지 반복.
답지 보기 전에 짠 코드
import java.util.ArrayList;
import java.util.List;
class Solution {
public int findTheWinner(int n, int k) {
List<Integer> list = new ArrayList<>(); //요소들을 담을 리스트.
for (int i = 1; i<=n; i++) {
list.add(i);
}
//일정하게 증가하는 인덱스 증가값.
int cycle = k;
//처음부터 시작하는 인덱스.
int index = 0;
//1개가 남을 때까지 반복.
while (list.size() > 1) {
//인덱스에 증가값을 더해줌. (자기 자신부터 세므로 -1함)
index += cycle-1;
//인덱스가 list보다 크면 리스트를 한 바퀴 이상 돈 것임.
if (index >= list.size()) {
//배열을 도는 것은 의미가 없습니다.
//3바퀴 돌고 1번째 인덱스에 있나,
//10바퀴 돌고 1번째 인덱스에 있나 상관없음.
//배열의 사이즈로 나눠서 나머지 인덱스가 실제 위치임.
index = index%list.size();
}
//해당 인덱스 요소를 삭제해줌.
list.remove(index);
}
return list.get(0);
}
}
'알고리즘 문제 풀이 > 배열' 카테고리의 다른 글
23005. 회문 만들기 (0) | 2025.05.14 |
---|---|
프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2021.11.17 |
1200. Minimum Absolute Difference (0) | 2021.09.13 |
1122. Relative Sort Array (0) | 2021.09.06 |
169. Majority Element (0) | 2021.07.03 |