반응형
백준 알고리즘 4단계 while문
https://www.acmicpc.net/step/2
01. A + B - 5 | 10952번
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let answer = '';
let i = 0;
const arr = [];
rl.on('line', (num) => {
const input = num.split(' ');
arr.push(input);
while (i < arr.length) {
const a = Number(input[0]);
const b = Number(input[1]);
if (a + b === 0) break;
answer += `${a + b}\n`;
i++;
}
}).on('close', () => {
console.log(answer);
process.exit();
});
02. A + B - 4 | 10951번
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let answer = '';
let i = 0;
const arr = [];
rl.on('line', (num) => {
const input = num.split(' ');
arr.push(input);
while (i < arr.length) {
const a = Number(input[0]);
const b = Number(input[1]);
answer += `${a + b}\n`;
i++;
}
}).on('close', () => {
console.log(answer);
process.exit();
});
03. 더하기 사이클 | 1110번
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let i = 0;
rl.on('line', (num) => {
const firstNum = Number(num);
while (true) {
const oneDigit = num % 10;
const tenDigits = Math.floor(num / 10);
const convertTenDigits = (num % 10) * 10;
i++;
sum = tenDigits + oneDigit;
num = convertTenDigits + (sum % 10);
if (firstNum === num) break;
}
}).on('close', () => {
console.log(i);
process.exit();
});
더하기 사이클의 경우 생각보다 시간이 좀 걸렸다. 단순히 순서대로 처리를 하다보니 코드도 길어지고 몇몇 케이스는 답이 다르기도 했다. 그러다 좋은 문제풀이를 발견해서 풀게되었고 문제 풀이는 다음과 같다.
- N을 입력해 N의 십의 자릿수와 일의 자릿수를 더한다.
- N의 일의 자릿수를 십의 자릿수로 바꾼다.
- 2번의 값과 1번 값의 일의 자릿수를 더해 새로운 수를 구한다.
- N이 새로운 수가 된다.
- 처음 입력한 수와 새로운 수가 같아질 때까지 과정을 반복한다.
26을 예로 들어보자.
- 2 + 6 = 8
- 6 -> 60
- 60 + 8 = 68
- N = 68
이렇게 처음 입력한 수와 새로운 수가 같아질 때까지 과정을 반복하게 되면
- 68
- 6 + 8 = 14 -> 84
- 8 + 4 = 12 -> 42
- 4 + 2 = 6 -> 26
26은 4번만에 원래의 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
더하기 사이클이 while문을 사용하기에 가장 좋은 문제 예시가 아닐까 생각된다. 생각보다 while문을 잘 사용하지 않아서 아직은 익숙하지도 않고 머리에 잘 안들어왔는데 이제 조금은 친해진 것 같다. 그래도 왠지 모르게 다른 반복문에 비해 사용이 좀 어렵다고 해야하나..? 잘 모르겠다.
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 위장 | JavaScript (0) | 2021.08.17 |
---|---|
[프로그래머스] 멀쩡한 사각형 | JavaScript (0) | 2021.08.15 |
[프로그래머스] 올바른 괄호 | JavaScript (0) | 2021.07.02 |
[프로그래머스] 땅따먹기 | JavaScript (4) | 2021.06.29 |
[프로그래머스] N개의 최소공배수 | JavaScript (0) | 2021.06.27 |