코딩연습
[백준 알고리즘] Node.js 1402. 아무래도이문제는A번난이도인것같다
니 뽀
2023. 8. 7. 13:15
1. 문제
https://www.acmicpc.net/problem/1402
1402번: 아무래도이문제는A번난이도인것같다
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다.
www.acmicpc.net
2. 풀이
- A의 경우 a1 * a2 * a3 ... * an = A가 된다고 했고, A'의 경우 a1 + a2 + a3 + ... + an = A' 이 된다고 했다.
- 처음에는 A의 약수를 구해서 더했을 때 A'값이 된다면 yes, 아니면 no라고 문제를 이해했었다. 하지만 A와 A'이 음수일 경우도 있고, 범위가 엄청 넓어서 이 방법은 아니라고 생각했다.
- 몇분 생각해보니
- A = A * 1, A' = A + 1
- A = A * 1 * 1, A ' = A + 2
- A = A * -1 * -1 * 1, A' = A - 1 - 1 + 1 = A - 1
- 결국 A'은 A보다 큰 모든 수는 다 가능하며, 작은 수 또한 모두 가능하다.
- 예를 들면,
- A = 6, A' = 5 일 때, 6 = 6 * -1 * -1 * 1, 5 = 6 - 1
- A = 4, A' = 5 일 때, 4 = 4 * 1, 5 = 4 + 1
- 과 같은 방식으로 1과 -1을 사용한다면 A를 A'으로 변할 수 있게 만들 수 있다는 의미였다.
- 처음에는 테스트 케이스가 있다는 사실을 잊어버리고 console.log("yes") 로 제출해서 오답이 나왔었다.
const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const T = +inputs.shift();
for(let i = 0; i < T; i++){
console.log('yes');
}