문제

코드
function solution(n) {
const ans = [];
let c = 1, dir = 'd', x = 0, y =0;
for(let i=1; i<=n; i++) {
const line = Array(i).fill(0);
ans.push(line);
}
while(ans[x][y] === 0) {
ans[x][y] = c
switch(dir) {
case 'd':
if(x+1<n && ans[x+1][y] === 0) x++
else {
dir = 'r';
y++;
}
break;
case 'r':
if(ans[x][y+1] === 0) y++
else {
dir = 'u';
x--;
y--;
}
break;
case 'u':
if(ans[x-1][y-1] === 0) {
x--;
y--;
}
else {
dir = 'd';
x++;
}
break;
}
c++
}
const result = [];
ans.forEach(arr => result.push(...arr));
return result;
}
나 오늘 진짜 코테 공부한 보람 느꼈잖아~~
이거 옛날 부트캠프 때 못 푼 문제였는데 1년이 지난 지금의 쿼카는 이거를 풀어버린다구!!!!!!!
『성장』 이란 이렇게 달콤한 거였나?? 와 진짜 나 블로그는 지인들 모르게 꽁꽁 숨겨야겠다;;;
switch문을 이용
- 일단 배열을 만들어요! 요새 자주했죠
Array(i).fill(0)
fill은 마음대로 채우면 돼요! 그것이 feel이니까
- dir를 설정해줘서 막히는 곳이 나왔을 때 방향을 바꿔줘야 해요!
- 여기서 주의할 점은 'u'일 때 x와 y를 모두 -1 해줘야 한다는 것!
- 그래서 'r'에서 'u'로 바뀌는 순간에도 모두 -1 해주세요!
Array.flat()
- 처음에 이거를 모르고 있다가 찾았어요! 근데 겁나 오래걸림ㅎㅎㅎㅎ
- 내 풀이대로 하는 게 200배 빨라요 flat() 거의 윈도우 xp