코린이의 소소한 공부노트

[LeetCode/Easy] 1560. Most Visited Sector in a Circular Track 본문

코딩테스트 풀이/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;