[백준 알고리즘] Node.js 1769. 3의 배수
2023. 11. 20. 12:14ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/1769
1769번: 3의 배수
문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를
www.acmicpc.net
2. 풀이
나는 이런 순서로 풀었다.
- 입력되는 정수의 값이 한 자리 수인지 확인.
- 한자리 수가 아니라면 정수들의 각 자리수의 값을 더해줌.
- 더한 값이 한자리 수가 된다면 반복 종료.
- 한자리수가 되지 않았다면 한자리수가 될 때까지 각 자리수를 더함.
const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split('').map(v => +v);
let numbers = inputs; // 원본 값을 바꾸기 싫어서 사본을 만듬.
function HowManySum() {
let sum; // 자리수의 값을 더한 값을 표현할 변수.
let count = 0; // 몇번이나 반복했는지
if(inputs.length === 1){
sum = +inputs[0]; // 한자리수라면 inputs도 하나뿐이니까
} else {
while(true){
sum = numbers.reduce((acc, cur) => acc += cur, 0); // 더해주고
count++; // 회수 증가 시켜주고
if(sum.toString().length === 1) break; // 한자리수가 되면 반복문 종료
numbers = sum.toString().split("").map(v => +v); // 아니라면 sum을 분해해서 numbers에 넣어줌.
}
}
// 더한 값이 3으로 나누어 떨어지면 'YES', 아니라면 'NO'
return {
answer : sum % 3 === 0 ? 'YES' : 'NO',
count : count
}
}
console.log(`${HowManySum().count}\n${HowManySum().answer}`);
3. 정리
- 3으로 나누어 떨어지는지 확인하고 답을 yes나 no로 해줄때, 모두 대문자로 돌려주지 않아서 계속 틀렸었다.......
'코딩연습' 카테고리의 다른 글
[백준 알고리즘] Node.js 1996. 지뢰 찾기 (1) | 2023.11.21 |
---|---|
[백준 알고리즘] Node.js 1817. 짐 챙기는 숌 (0) | 2023.11.21 |
[백준 알고리즘] Node.js 14171. Cities and States (0) | 2023.09.05 |
[백준 알고리즘] Node.js 15810. 풍선 공장 (0) | 2023.09.01 |
[백준 알고리즘] Node.js 12018. Yonsei TOTO (0) | 2023.08.30 |