⚡문제정보
대충 이런 문제인데 처음 생각한 로직으로 풀려다가
구현이 안되어서 오랜시간 막혔습니다.
처음 구상은 포인터를 하나 두고
arr[i] - pointer값이 m보다 크거나 같으면 answer를 올리는 식으로 구상했는데
그렇게 짜니 안되는 케이스가 생겼어요
결국 맨처음에 떠올릴 수 있던 무식하게 순회하기를 선택하고
풀었읍니다.
🔍접근방법
1. 정직하게 배열을 주어진 길이만큼 만들고 true로 가득채워준다.
2. section에 주어진 값과 매칭되는 인덱스에 false를 할당한다.
3. false를 만나면 m - 1값만큼 인덱스를 점프시키고 answer값을 올려준다.
😑나의 풀이
function solution(n, m, section) {
let answer = 0
let arr = new Array(n).fill(true)
section.forEach(e => arr[e-1] = false)
for(let i = 0 ; i < arr.length ; i++) {
if(!arr[i]) {
answer += 1
i += m-1
}
}
return answer
}
위 로직을 정직하게 코드로 옮겼습니다.
간단한 풀이이기는 한데 마음에 들지 않는다.
내가 처음 생각했던 절댓값을 기준으로 문제를 푸는 방법이 훨씬 효율적일 것 같은데?
🔍다른사람의 풀이
function solution(n, m, sections) {
var answer = 0;
var painted = 0;
for(var section of sections) {
if(painted < section) {
answer++;
painted = section+m-1;
}
}
return answer;
}
대충 이런식으로 풀면 훨씬 빠를것같았어요..
제가 너무 이상하게 생각을 하고 있었네요
근데 왜 콘솔찍어보니까 제 풀이랑 시간복잡도가 비슷할까요? 몰?루
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 2] 모음사전 Javascript (0) | 2023.03.24 |
---|---|
[Programmers Level 2] 피로도 Javascript (0) | 2023.03.23 |
[Programmers Level 1] 바탕화면 정리 Javascript (0) | 2023.03.05 |
[Programmers Level 2 집합] [1차] 뉴스 클러스터링 Javascript (1) | 2023.01.19 |
[Programmers Level 3] 야근지수 Javascript (0) | 2023.01.12 |