[프로그래머스] 삼각 달팽이 (switch문을 이용한 배열 컨트롤)

쿼카쿼카·2023년 4월 7일
0

알고리즘

목록 보기
52/67

문제

코드

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
profile
쿼카에요

0개의 댓글