https://programmers.co.kr/learn/courses/30/lessons/87390
function solution(n, left, right) {
if(n===1) return 1;
let arr=Array.from(Array(n), ()=>Array(n));
for(let i=0; i<n; i++){
for(let j=0; j<i+1; j++){
if(typeof arr[i][j]==='undefined') arr[i][j]=i+1;
if(typeof arr[j][i]==='undefined') arr[j][i]=i+1;
}
}
return arr.flat().slice(left, right+1);
}
'signal: aborted(core dumped)'라는 오류(찾아보니 치명적인 오류라고 한다)가뜬다.
이게 왜 그런지 찾는 과정에서, 배열요소에 0을 넣는과정(Array(n).fill(0))에서 이런 에러가 발생할 수 있다고 해서 if(arr[i][j]===0)
을 위와같이 배열이 비어있는지 확인해보는 코드로 바꿔봤는데, 안된다...
일단 이 질문에 대한 해답은 아직 찾지못했다. 문제 '질문하기'에 글을 적어놨으니, 나중 확인해보자.
이 분의 글 을 참고해보면, n이 10^7까지 input으로 들어오기 때문에 문제에서 나온대로 n*n 2차원 배열을 만든 후 1차원배열을 만들면 효율성 테스트에서 통과하지 못한다고 되어있다. (하긴 n이 10^7이면 n*n하면 효율성 통과 못하는것도 당연할듯) 에러메시지인 core dumped
를 검색해보면 인풋이 잘못되어서 생기는 에러라는 말도 있었는데, 이러한 이유라면 이해가 된다.
function solution(n, left, right) {
const ans = [];
while (left <= right) {
ans.push(Math.max(Math.floor(left / n), left++ % n) + 1);
}
return ans;
}
이분의 코드를 참고했다. 아니 어떻게 이런 규칙성을 찾아내실 수 있지...?
내 코드가 답이 안보이면, 싹 다 지우고 새로운 규칙성을 찾아내자!