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 |
Tags
- geometry
- dynamic programming
- Data Structure
- implement
- java
- Matrix
- 파이썬
- database
- simulation
- bit manipulation
- Number Theory
- Tree
- Stack
- Binary Tree
- hash table
- SQL
- 구현
- 코테
- Class
- two pointers
- Math
- 자바
- string
- Counting
- sorting
- Method
- array
- 코딩테스트
- greedy
- Binary Search
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 1560. Most Visited Sector in a Circular Track 본문
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;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 1582. Special Positions in a Binary Matrix (0) | 2023.04.13 |
---|---|
[LeetCode/Easy] 1576. Replace All ?'s to Avoid Consecutive Repeating Characters (0) | 2023.04.13 |
[LeetCode/Easy] 1556. Thousand Separator (0) | 2023.04.12 |
[LeetCode/Easy] 1518. Water Bottles (0) | 2023.04.12 |
[LeetCode/Easy] 1460. Make Two Arrays Equal by Reversing Subarrays (0) | 2023.04.12 |