1.if문 내에서 조건이 통과하지 않는 경우 결과값이 이상하게 출력될 수 있다.
이 경우 if문이 왜 제대로 되지 않는지를 자세히 살펴봐야 하는데 i와 n, input등 여러가지 입력값들 중 다른 값을 넣어 비교했을 경우 조건이 통과되지 않아 else로 넘어갈 수 있다. 조건의 비교값이 제대로 비교되고 있는지를 항상 주의하자.

2.비주류 문제는 풀지 않는게 좋을 수 있는 것 같다.
비주류 문제를 풀었고 예제를 다 맞았으며 해당하는 문제 설명 공식까지 다 적용해보았지만 
결과값이 맞는데 정답처리되지 않는 현상을 해결할 수 없었다.
결과값 출력 방식을 백틱, 배열 추가 후 join(), String화 한 후 (a,b)형식으로 출력 등
여러가지 방식으로 console을 찍었지만 통과되지 않았다.
관련 질문검색 내용도 0개이고 구글에 검색해봐도 내가 사용한 내용과 같은 방식으로 문제를 푼 사람 단 한명의 글만 올라와있었다. 이게 js의 문제인지도 모르겠고 1~200명 언더로 있는 문제는 되도록 풀지 말자..

3.다른 문제들도 다 그렇지만 타일링 문제는 규칙을 찾는 것이 가장 중요하다.
타일링의 경우 가로로만 추가할 수 있는 블록두개는 사실 네모 한칸과 같기 때문에 홀수인 경우는 증가치가 적어 아래와 같은 차이점을 가지고 있다.

if(i%2){
    dp[i] = dp[i-1] * 2n - 1n
}
else{
    dp[i] = dp[i-1] * 2n + 1n
}


4.삼각형 등의 이차배열을 사용할 경우 좌표값 고정부분을 찾은 후 for문 내부 i의 시작값을 조정해주면 배열의 위치기준 대각선 방향을 고를 수 있다.

5.자주 언급되는 내용이지만 모든 경우를 확인해야 한다. 아래의 코드는 음수체크가 뒤에 있는 것은 맞지만 0번째 idx를 임의로 지정했는데 그 값의 초기화가 없기 때문에 아래의 코드로 변경하거나 초기값을 -Infinity로 넣은 후 0번째 idx부터 진행해야 했다.

let max = arr[0]
let maxNow = max

for(let i = 1 ; i < nums ; i++){
    maxNow = maxNow + arr[i]
    max = Math.max(max, maxNow)
    if(maxNow < 0){              //음수이면 값을 초기화해주지만 0번쨰 idx는 초기화되지 않는다.
        maxNow = 0
    }
}

for(let i = 1 ; i < nums ; i++){
    if(maxNow < 0){ //초기화부터 하고 시작.
        maxNow = 0
    }
    maxNow = maxNow + arr[i]
    max = Math.max(max, maxNow)
}

'회고' 카테고리의 다른 글

프로젝트 관리하기  (0) 2022.08.23
프로젝트 시작하기  (0) 2022.08.22
학습(알고리즘)  (0) 2022.08.20
프로젝트 준비 (Pre-Project Wiki)  (0) 2022.08.19
프론트엔드 부트캠프(코드스테이츠) 4개월차 회고  (1) 2022.08.18

+ Recent posts