
😎풀이
- 방문 가능한 배열 생성
rounds
순회
2-1. 이전 지점보다 현재 지점이 더 크다면, 이전 지점부터 현재 지점 방문
2-2. 이전 지점보다 현재 지점이 더 작다면, 현재 지점부터 끝 지점까지 방문 후 첫 번째 지점부터 이전 지점까지 방문
- 가장 많이 방문한 지점 배열 형태로 반환환
function mostVisited(n: number, rounds: number[]): number[] {
const visit = new Array(n + 1).fill(0)
const roundLen = rounds.length
let prev = rounds[0]
visit[prev]++
for(let i = 1; i < roundLen; i++) {
const cur = rounds[i]
if(prev < cur) {
for(let i = prev + 1; i <= cur; i++) visit[i]++
} else if(prev > cur) {
for(let i = prev + 1; i <= n; i++) visit[i]++
for(let i = 1; i <= cur; i++) visit[i]++
} else {
for(let i = 1; i <= n; i++) visit[i]++
}
prev = cur
}
const maxVisit = Math.max(...visit)
return visit.reduce((acc, cur, idx) => {
if(cur < maxVisit) return acc
return [...acc, idx]
}, [])
};