코딩테스트 풀이/JAVA
[LeetCode/Easy] 1560. Most Visited Sector in a Circular Track
무지맘
2023. 4. 13. 12:10
1. Input
1) int n
2) int[] rounds
2. Output
1) 다음 설명에 따라 이동했을 때 가장 많이 방문한 구역의 번호를 오름차순으로 담은 리스트를 반환
- 1번부터 n번까지 총 n개의 구역이 있다.
- 구역의 번호는 시계 반대방향으로 오름차순으로 붙어있다.
- 출발지는 rounds[0]이다.
- 1회 이동에 rounds[i]부터 round[i+1]까지 이동한다.
- 이동 방향은 시계 반대방향이다.
3. Constraint
1) 2 <= n <= 100
2) 2 <= rounds.length <= 101
3) 1 <= rounds[i] <= n
4) 1회 이동의 출발지와 도착지는 다르다.
4. Example
Input: n = 4, rounds = [1,3,1,2] -> Output: [1,2]
설명: 이동은 그림과 같이 하게 되며, 1번부터 4번 구역까지는 각각 [2,2,1,1]번 방문하게 되어 [1,2]를 반환한다.
5. Code
1) 첫 코드(2023/04/13)
int[] count = new int[n];
int start = rounds[0];
for(int i=0 ; i<rounds.length-1 ; i++){
int end = rounds[i]<rounds[i+1] ? rounds[i+1] : rounds[i+1]+n;
for(int j=start ; j<=end ; j++)
count[j%n==0? n-1 : j%n -1]++;
start = (end+1)%n;
}
int max = 0;
for(int i : count)
if(i>max)
max = i;
List<Integer> answer = new ArrayList<>();
for(int i=0 ; i<count.length ; i++)
if(count[i]==max)
answer.add(i+1);
return answer;