to do list 기술 매니저님 리뷰
1. 들여쓰기, 네이밍
- 혼자서만 사용할 코드가 아니므로 줄정리를 통한 가시성 확보 필수
- 컨벤션 등을 통한 네이밍 통일, 네이밍의 직관력 중요
2. 코드 설계 방식
- 큰그림을 그리듯이, 목차 위주로
- 함수명과 로직구상이 중요
- 큰 설계가 끝난 이후 함수 상세내용은 언제든지 누가해도 상관 X
3. 모듈화
- 함수에 함수가 꼬리를 무는 방식은 의존적인 방식
- 개별 함수들을 만들어 놓은 후, 필요한 로직은 개별 함수들을 따로 조합해서 생성
* 위 방식으로 개선하여 웹종합 강의를 들은 후 구현 해볼 예정
작성 중인 to do list 코드 |
let todolist = [] function todoinput(){ const a = prompt('제목 입력') const b = prompt('내용 입력') const c = prompt('완료 여부') addlist(a,b,c) } function disc(){ return new Date().getTime() } function addlist(a, b, c){ let adl = { 번호 : disc(), 제목 : null, 내용 : null, 완료 : null // 완료방식 true/false으로 변경 예정 } adl.제목 = a adl.내용 = b adl.완료 = c console.log(adl) todolist.push(adl) return } todoinput() console.log(todolist) function edit(){ //고유키값에 접근 후 수정 // 1차구상 : addlist방식으로 프롬프트 사용 } function comp(){ // 완료여부 취소 함수 구상 예정 } |
백준 js로 업로드 하는법
1. 언어 설정을 node.js로 변환한뒤 상단에 아래와같은 조건을 걸어주어야 한다
1. 하나의 값을 입력받을 때 const fs = require('fs'); const input = fs.readFileSync("/dev/stdin").toString().trim(); 2. 공백으로 구분된 한 줄의 값들을 입력받을 때 const fs = require('fs'); const input = fs.readFileSync("/dev/stdin").toString().trim().split(" "); 3. 여러 줄의 값들을 입력받을 때 const fs = require('fs'); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때 const fs = require('fs'); const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split(/\s/); 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때 const fs = require('fs'); const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞여서 입력받을 때 ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력 const fs = require('fs'); const input = fs.readFileSync("/dev/stdin").toString().trim().split(/\s/); const n = input[0]; const n_arr = input.slice(1, n+1); const [m, ...m_arr] = input.slice(n+1); |
2. 이후 입력값(input)을 받을 수 있도록 로직을 짠 뒤 테스트케이스에 대한 정답을 console.log로 출력해야 채점이 가능하다
백준 문제
1. 4948 베르트랑 공준
js의 테스트 케이스는 통과 but 제출불가 | 제출 성공 정답 양식 |
1. 제출 양식에 맞추지 못함 function solution(n){ let a = [] if (n===1){ return 1 } else if (n===0){ return } else { for (i=n+1; i<n*2; i++){ for (j=2; j<n; j++){ if (Number.isInteger(i/j)){ a.push(i) } } } let b = [...new Set(a)] return n-1-b.length }} console.log(solution(value)) 2. 문제 입력을위해 3중 포문으로 변경하였더니 시간초과 let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(Number); for(let i=0; i<input.length; i++){ let a = [] if(input[i]===0) { break;} else if (input[i]===1){ return 1 } else if (input[i]>1){ for (j=input[i]+1; j<input[i]*2; j++){ for (k=2; k<input[i]; k++){ if (Number.isInteger(j/k)){ a.push(j) } } } } let b = [...new Set(a)] let c = input[i]-1-b.length console.log(c) } |
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(Number); // let input = [1, 10, 13, 100, 1000, 10000, 100000, 0]; function isPrime(num) { if(num===1) return false; for(let i=2; i<=parseInt(Math.sqrt(num)); i++){ if(num%i===0) return false; } return true; }; for(let i=0; i<input.length; i++){ if(input[i]===0) break; let count = 0; for(let j=input[i]+1; j<=input[i]*2; j++){ if(isPrime(j)) count++; }; console.log(count); } |
'항해14기 온보딩 > 항해14기 온보딩 개발일지' 카테고리의 다른 글
[항해14기] 온보딩 개발일지 12 2023/03/18 (0) | 2023.03.18 |
---|---|
[항해14기] 온보딩 개발일지11 2023/03/17 (0) | 2023.03.17 |
[항해14기] 온보딩 개발일지 9 2023/03/15 (0) | 2023.03.15 |
[항해14기] 온보딩 개발일지8 2023/03/14 (0) | 2023.03.14 |
[항해14기] 온보딩 개발일지7 2023/03/13 (0) | 2023.03.13 |