
겨울 방학 코딩테스트 스터디 시작!
구성원: 나, 친한 언니
스터디 방식:깃허브-문제 풀이 저장소,개발 블로그-배운점 느낀점 등 정리
내 상태: 코딩테스트 공부 거의 안 해봄
결론: 백준 단계별 문제를 13까지 풀어보면서 기본기를 다지자.
week1 문제: 백준 step1
입출력과 사칙연산
- 2557 - Hello World
- 1000 - A+B
- 1001 - A-B
- 10998 - AxB
- 1008 - A/B
- 10869 - 사칙연산
- 10926 - ??!
- 18108 - 1998년생인 내가 태국에서는 2541년생?!
- 10430 - 나머지
- 2588 - 곱셈
- 11382 - 꼬마 정민
- 10171 - 고양이
- 10172 - 개
console.log("Hello World!");
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a - b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a - b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a * b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a / b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a + b);
console.log(a - b);
console.log(a * b);
console.log(parseInt(a / b));
console.log(a % b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().trim();
console.log(input + "??!");
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString();
var kOutput = input - 543;
console.log(kOutput);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var A = parseInt(input[0]);
var B = parseInt(input[1]);
var C = parseInt(input[2]);
console.log((A + B) % C);
console.log(((A % C) + (B % C)) % C);
console.log((A * B) % C);
console.log(((A % C) * (B % C)) % C);
// 세 자리 * 세 자리
// 출력 1. 세 자리 * 1의 자리 수
// 출력 2. 세 자리 * 10의 자리의 수
// 출력 3. 세 자리 * 100의 자리의 수
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split("\n");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
var place = b.toString().split("");
var one = parseInt(place[2]);
var two = parseInt(place[1]);
var three = parseInt(place[0]);
console.log(a * one);
console.log(a * two);
console.log(a * three);
console.log(a * b);
var fs = require("fs");
var input = fs.readFileSync('/dev/stdin').toString().split(" ");
var a = parseInt(input[0]);
var b = parseInt(input[1]);
var c = parseInt(input[2]);
var result = a + b + c;
console.log(result);
var one = "\\ /\\\n";
var two = " ) ( ')\n";
var three = "( / )\n";
var four = " \\(__)|\n";
console.log(one + two + three + four);
var a = "|\\_/|\n";
var b = "|q p| /}\n";
var c = '( 0 )"""\\\n';
var d = '|"^"` |\n';
var e = "||_/=\\\\__|";
console.log(a + b + c + d + e);
ex) 공백으로 구분된 한 줄의 값들을 입력받을 때// fs 모듈 불러오기 var fs = require("fs"); // // 파일을 읽는 함수 readFileSync ✔️ // 파일을 읽는 함수 함수 readFile // // require("fs").readFileSync("/dev/stdin")의 반환값은 문자열이 아닌 Buffer 객체를 반환 // 해결법 1. 문자열로 바꾸기 위해서는 위의 코드처럼 toString() 메서드로 문자열로 바꾸기 ✔️ // 해결법 2. 문자열 연결 연산을 통해 Buffer 객체를 문자열로 바꾸기 // 해결법 3. readFileSync의 두 번째 인수로 인코딩을 지정해주기 var input = fs.readFileSync('/dev/stdin').toString().split(" ");
parseInt() 함수: 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환기본
var a = parseInt(input[0]); var b = parseInt(input[1]);
정수 반환 기능
console.log(parseInt(a / b));
paresInt()를 사용하지 않아도 숫자로 변환되는 경우
// input = '2541'일 때 kOutput = 1988 var kOutput = input - 543;
상수 선언const
입출력에 서툴어 1000 문제는 정답을 봄(코드에 var 사용)
생각 없이 var를 계속 사용하여 문제를 풀어나감
스터디원의 코드를 보고 var는 부족한 점이 많은 키워드임을 자각함
상수는 const를 변수는 let 키워드를 사용하자고 생각하게 해주었음
map(Number)
배열 내 문자열 원소들을 숫자로 변환해주는 것을 배움
const fs = require("fs"); const input = fs.readFileSync('/dev/stdin').toString().split(" "); const a = parseInt(input[0]); const b = parseInt(input[1]);➡️
const fs = require("fs"); const input = fs.readFileSync('/dev/stdin').toString().split(" ").map(Number); const a = input[0]; const b = input[1];
parseInt("문자열") ➡️ Number("문자열")
백틱에 편리함
문자열 줄바꿈이 쉽다는 것을 배움
구조 분해 할당
const input = ["a","b","c"]; const A = input[0]; const B = input[1]; const C = input[2];➡️
const input = ["a", "b", "c"]; const [A,B,C] = input;
문자열 인덱스 접근 가능
trim()
trim() 메서드는 문자열 양 끝의 공백을 제거하고 원본 문자열을 수정하지 않고 새로운 문자열을 반환
🤓 자바스크립트 문제를 풀면서
백준을 1년 전에 아주 잠깐 풀었던 적이 있었다. 그때 입출력을 보고 그냥 도망갔었는데 직접 풀어보니 할만 했다. 아직 기초라 그런 것임이 분명하기도 했다.
🙋🏻♀️ 스터디원 코드 리뷰를 받으면서
사실 나는 코드 리뷰를 잘하는 편이 아니다. 이번에 스터디원 언니의 코드 리뷰를 보면서 남의 코드를 좋은 방향으로 고칠 수 있게 말해주는 것이 정말 감사했다.🙋🏻♀️ 스터디원 코드 리뷰를 하면서
나는 간단하게 풀면서 해결하는 것에서 초점을 두었다. 스터디원은 그것이 아니라 가장 적합한 코드를 구성하려고 했던 것이 눈에 보였다. 나는 사실 `var` 사용을 지양한지 오래되었음을 알았음에도 고치지 않고 했다. 이것 말고도 여러 가지 문제점들이 많았는데 그것을 다시 자각하게 해주었다. 다음주부터는 나도 도움되는 코드를 작성해야 겠다.
공통: 기초 문제를 빨리 끝내기 위해서 문제량을 늘릴 예정
개인: 코드 리뷰를 바탕으로 코드 수정과 더 적합한 코드 구성하기
출처
문제: 백준
2-1: 한 걸음씩
3-7: mdn_trim()