Chapter 1. 프로젝트 기획과 분석
Chapter 1-1. 프로젝트 개요
1.실제로 프로젝트가 진행되는 과정을 이해합니다.
Chapter 1-2. 사용자 요구사항 정의서
2.사용자 요구사항 정의서를 작성할 수 있습니다.
1.프로젝트는 아래와 같은 순서로 진행된다.
과업 발생 => 사업자 선정 및 계약 => 기획 및 분석 => 설계 => 구현 => 테스트 => 서비스 => 유지보수
2.사용자 요구사항 정의서에 대해 고민하고 작성을 해봤지만 이게 잘 된 요구서인지에 대해서는 피드백을 받지 못했기 때문에 알 수 없는 상태다.
CT(1).직진의 경로에서 특정 길마다 한번에 점프할 수 있는 길이가 다를 경우 이중for문을 사용해 dp에 차례대로 값들을 넣어줄 수 있다.
let num = input.length
let dp = new Array(num+101).fill(Infinity)
dp[1] = 0
for(let i = 0 ; i < num ; i++){
for(let j = i+2 ; j < i+2+input[i] ; j++){
dp[j] = Math.min(dp[i+1] + 1 , dp[j])
}
}
CT(2).문제의 반례 또는 특수 케이스를 잘 확인해야 한다... 몇번 적는건지는 모르겠지만 같은 실수를 자주 반복하는 것 같다. 특히 문제가 긴 시간을 요구할수록 처음의 조건들은 까먹고 대전제에만 신경쓰는 느낌이다. 해당하지 않는 경우 등의 조건에 -1을 출력하는 경우 console.log에 삼항연산자를 사용하는 방식 -> console.log((dp[num] === Infinity ? -1 : dp[num]))로 제출한다.
CT(3).
실제로는 아래와 같은 예시코드를 사용해놓고 평소에 쓰던 split코드묶음을 그대로 가져와 사용하다가 까먹고 .slice(1)을 빼먹었다.. 왜 틀린지 이유도 모르고 한참을 씨름하다가 다시 천천히 뜯어보고 간신히 이유를 알 수 있었다. 입력값을 받아오는 부분을 잘 체크하자... 잘못하면 10분이 넘는 시간을 이상한 곳에 허비할 수 있다. (trim을 안써서 일주일넘게 제대로 문제 못풀던거 생각하면 어휴...)

let input = `3
123 54
7 4
20 10`.split('\n').slice(1) //에제문제를 돌려보던 상황
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') //평소에 쓰는 입력받아오는 묶음'회고' 카테고리의 다른 글
| [Pre-Project 개발일지]-1 (0) | 2022.08.25 |
|---|---|
| 프로젝트 관리하기-2 (0) | 2022.08.24 |
| 프로젝트 시작하기 (0) | 2022.08.22 |
| 학습(알고리즘) (0) | 2022.08.21 |
| 학습(알고리즘) (0) | 2022.08.20 |
