일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vercel git lfs
- dvh
- 티스토리 성능
- animation
- adb connect
- nextjs
- npm package
- github pdf
- github 100mb
- augmentedDevice
- silent printing
- Failed to compiled
- 이미지 데이터 타입
- github lfs
- ELECTRON
- Git
- custom printing
- ffi-napi
- adb pair
- react-native-dotenv
- Can't resolve
- electron-packager
- device in use
- camera permission
- html
- Each child in a list should have a unique "key" prop.
- Recoil
- camera access
- react-native
- rolldown
- Today
- Total
Bleeding edge
[프로그래머스] n^2 배열 자르기 - 자바스크립 본문
https://programmers.co.kr/learn/courses/30/lessons/87390
function solution(n, left, right) {
let list = []
for(let i = 0 ; i<n;i++){
for(let j = 0 ; j<n;j++){
let max = Math.max(i, j)
list.push(max+1)
}
}
list = list.slice(left, right+1)
return list
}
이 문제는, i와 j중에 더 큰 것이 되는구나! 라고 생각하고 풀었던 1회차 문제풀이. 그림 페이지내에서 있는 그대로 그림으로 만들었더니 코어 어보션이떴다.. 제한조건을 보니 왜 문제가 생겼는지 알 수있었다. 무지막지하게 많은 숫자를 수행하게 만들었기 때문.. 이경우에는, 필요한 경우의 케이스만 수행하면 된다. 그래서 다른 풀이방식으로 바꿨다.
우선 1회차 풀이를 찢었다. right와 left를 다른방식으로 표기하기 위해서, right의 좌표를 x, y로 분해하고 left를 x, y로 분해했다.
let al = Math.floor(left/n)
let ar = Math.floor(right/n)
let bl = left%n
let br = right%n
문제는, [al, bl] -> [ar, br]로 갈때, 줄이 바뀔때 어떻게 할거냐이다 였다. 그래서 for문에서 줄이 바뀔때 어떻게 하나 생각을 해보니, j가 n보다 작은경우에 j를 0으로 만들고, i를 ++ 시켰다. 그래서 while문으로 감쌌다. 문제는 while문을 어떻게 탈출할까? 생각을 해봤는데, 결국 right - left + 1 만큼만 수행하면 됬기에 while(num!==0)으로 하고, 매바퀴 돌때마다 num을 빼줬다.
function solution(n, left, right) {
let list = []
let num = right - left +1
let x = Math.floor(left/n)
let y = left%n
while (num!==0){
let max = Math.max(x, y);
list.push(max+1)
if(y<n-1){
y++
}else if(y>=n-1){
y=0;
x++;
}
num--
}
return list
}
사실 풀면서 당황했었던건, while문 안에 if가 y<n대로 했을 때는 한칸 더 수행하는 것 때문에 당황했었다. 근데 생각을 하고보니... for문 같은 경우에는 처음에 y<n을 필터를 하고 시작하기 때문에 다른거였다. 그러므로 y<n-1로 if문을 잡으면 end!!
for문의 구조를 다시한번 생각하게 되서 좋았고, while문을 다른 사람의 풀이처럼 필요한 시행횟수가 되면 탈출되게 풀이를 해서 좋았다.
'코딩테스트 공부' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 - 자바스크립트 (0) | 2022.05.10 |
---|---|
[프로그래머스] [3차] 압축- 자바스크립트 (0) | 2022.05.06 |
[프로그래머스] [1차] 다트 게임 - 자바스크립트 (0) | 2022.04.28 |
[프로그래머스] k진수에서 소수 개수 구하기 - 자바스크립트 (0) | 2022.04.25 |
[프로그래머스] 행렬의 곱셈 - 자바스크립트 (0) | 2022.04.25 |