최근 학교 과제 문제와 더딘 진도로 js 공부가 뜸했는데 이 동안 많이 기본 문법에 취약해져 이제서야 알고리즘 문제를 풀기 시작했다.

알고리즘 또한 이전 기본 문법 공부와 같이 기록을 남겨 스스로 돌아볼 수 있도록 해야겠다.

부스트캠프를 지원하였는데 아직 실력이 많이 부족하지만
6월 24일 코딩테스트 전까지 최대한 해봐서 나의 레벨 테스트를 해봐야겠다.

문제

나의 풀이

function solution(n, lost, reserve) {
            const tmp = new Array(n).fill(1);//전부 1로 채우고
            for(let i=0; i<lost.length;i++){//잃어버린 애들은 0으로
                tmp[lost[i]-1] = 0;
            };
            for(let i=0; i<reserve.length;i++){//여분 있는 애들 1 더해주고
                tmp[reserve[i]-1]++;
            };
            for(let i=0; i<tmp.length;i++){//tmp를 돌며
                if(tmp[i]==0&&tmp[i-1]>1){//0을 발견하였는데 이전 값이 1보다 크다면(여벌이 있다면)
                    tmp[i]++;//현재 값을 올리고
                    tmp[i-1]--;//이전 값을 내린다
                }else if(tmp[i]==0&&tmp[i+1]>1){//위와 반대로 뒷 값이 1보다 큰 경우
                    tmp[i]++;
                    tmp[i+1]--;
                };
            };
            const answer = tmp.filter(num => num > 0).length;//tmp를 filter 하며 0이 넘어가는 애들(체육복이 있거나 여벌이 있는 애들)만 걸러 그 길이를 담아 반환
            return answer;
        };

느낀 점

완성을 하여 12case도 통과 하였다.
하지만 아무리봐도 for문을 남용한 것 같아서 지저분해 보이고 쓸데없는 표현들이 들어가있다.

해결한 문제들을 스스로 평가를 내리고 이곳저곳에서 접근 방법이나 코드에 대한 피드백을 받고 프로그래머스에서 타 유저분들의 코드를 보며 기본 객체 사용법이 더 익숙해져야 할 것 같다.

profile
https://github.com/WonseoYang

0개의 댓글