일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- box-sizing: border-box
- error: ENOENT: no such file or directory
- 나도코딩 파이썬
- 라매개발자
- html 끝
- 백준
- 생활코딩 WEB2-JavaScript
- max-width
- 크롬웹
- 나도코딩
- 할만한데?
- 코딩테스트
- 백준 자바스크립트
- calc()
- li 태그
- border radius
- WEB2-JavaScript
- 백준 정리
- 노마드 코더
- 단계별로 풀어보기
- Pull
- git 버전관리
- 드림코딩
- HTML
- nav태그
- 생활코딩
- :root
- git
- margin 0 auto
- button:focus cursor: pointer; outline: none;
- Today
- Total
코딩응애의 개발블로그
[JS] 백준 단계별로 풀어보기 (while문), 10951 trim() 본문
백준 10952번 문제
백준 문제들을 풀 때 입력을 어떻게 코드를 짜야할지 아직도 익숙지 않고 어렵다 이 문제도 겨우 이해를 했는데 사실 계속 풀어보긴 해야 할 듯싶다. 일단 전체 코드부터 보자면
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(__dirname + '/input.txt').toString().split('\n');
const testcaseArray = [];
for (let i = 0; ; i++) {
const tempValue = input[i].split(' ').map(value => +value);
testcaseArray.push({A : tempValue[0], B : tempValue[1]});
if (tempValue[0] === 0 && tempValue[1] === 0) {
break;
}
}
solution(testcaseArray);
function solution(testcaseArray) {
let A = testcaseArray[0].A;
let B = testcaseArray[0].B;
let idx = 1;
while(A !== 0 || B !== 0) {
console.log(A+B);
A = testcaseArray[idx].A;
B = testcaseArray[idx].B;
idx++;
}
}
여기서 가장 이해가 안됬던 부분이 뭐냐면
A = testcaseArray[idx].A;
코드 안에 이 부분이었는데 이게 객체를 가져오는 과정이랜다. 코드를 자세히 살펴보니 이 부분이 객체였던 것이다.
testcaseArray.push({A : tempValue[0], B : tempValue[1]});
중괄호를 못 보고선 계속 그냥 배열에 추가하는 거구나라고 생각해서 구글에 검색해도 해결책이 안 나왔던 것이다.
이 문제를 풀면서 새롭게 알게 된 점은 배열에 push()를 이용해서 객체를 추가할 수 있다는 점과
객체에 key값은 문자열 또는 기호여야 하고 value값은 모든 유형이 될 수 있다는 점
마지막으로 내가 가장 궁금했던 거 A = testcaseArray[idx].A; 이건 그냥 value값 가져오는 과정이었다. (배열이름.key)
백준 문제 10951번
위에 문제와 거의 비슷한 문제 단지 백준에서 입력 값에 끝에 줄 바꿈 공백이 있어서 틀렸다고 나올 수 있는데
문제를 해결하기 위해서는 새로운 조건문을 하나 추가해줘야 한다.
일부 입력값의 마지막에 개행문자가 포함된 경우가 종종 있다.
이런 경우 split("\n")할 경우 공백문자 하나를 더 갖는 배열을 반환한다.이를 방지하기 위해서 trim()을 사용한다.
출처 : https://tesseractjh.tistory.com/39
백준 문제 1110번
우선 코드를 보자면
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(__dirname + '/input.txt').toString().split('\n');
solution(+input[0]);
function solution(N) {
let makeNum = N;
let sum;
let count = 0;
while(makeNum !== N || count === 0) {
count++;
sum = Math.floor(makeNum/10) + (makeNum % 10);
makeNum = (makeNum % 10) * 10 + (sum % 10);
if (makeNum === N) {
break;
}
}
console.log(count);
}
각 자릿수를 구하는 방법을 알면 쉽지만 그 방법까지 생각해 내는 게 어려운 문제 그리고 while문에 조건 또한 생각해야 하고 makeNum이라는 변수 선언도 따로 생각해야 하는 문제 let makeNum = N; 이 한 줄 코드 때문에 더 오래 걸렸다
저거를 선언해줘야 코드가 실행이 된다 그리고 각 자릿수 구하는 법들은 코드를 보면 이해가 될 것이다 저걸 생각을 해내냐가 문제인 거지..
※ 백준 문제를 풀면서 정리를 하고 있지만 내가 나중에 봤을 때 이해가 돼야 되는데 그전 포스트를 보면 코드를 보면서 정리한 거를 봐야 이해가 되는 수준으로 정리를 해놔서 차라리 그냥 정리할 때 코드를 붙여 넣고 그 코드에서 몰랐던 점이나 새로 알게 된 점을 정리하는 식으로 하는 게 훨씬 나을 것 같아서 앞으로 그렇게 할 거임
'알고리즘 문제' 카테고리의 다른 글
[JS] 백준 단계별로 풀어보기(if문 2525번)vol.2 (0) | 2022.03.07 |
---|---|
[JS] 백준 단계별로 풀어보기 (입출력과 사칙연산 1000번, 2588번) vol.2 (0) | 2022.03.03 |
[JS] 백준 단계별로 풀어보기 (for 문) (0) | 2022.01.18 |
[JS] 백준 단계별로 풀어보기(if문) (0) | 2022.01.07 |
[JS] 백준 단계별로 풀어보기 (입출력과 사칙연산) (0) | 2022.01.03 |