백준 24313번을 풀어보았다.
먼저 O(n) 정의를 만족하는 부등식은 n≥n0에 대해 a1*n+a0≤c*n이고 정리하면 a0≤(c-a1)*n이다.
따라서 자연스럽게 c와 a1의 대소를 고려해보게 되는데,
a1>c일 경우 a0이 무엇이든, n이 무한에 가까워지며 언젠가는 부등식을 성립하지 못하게 된다.
즉, a1>c일 경우 0을 출력하고 그 외의 경우 a1*n0+a0≤c*n0을 성립하면 1을, 아니면 0을 출력하면 된다.
let [[a1, a0], [c], [n0]] = require('fs').readFileSync('/dev/stdin').toString().split('\n').map((value) => value.split(' ').map(Number))
if (a1 > c) {
console.log(0)
} else {
if (a1 * n0 + a0 <= c * n0) console.log(1)
else console.log(0)
}
위 문제를 풀며 기억해두면 좋을 것 두 가지는,
먼저 문제 상황을 이해하고 예외 상황을 파악하기 위해 식을 정리하고 계수를 살펴보는 습관이 필요하다.
그러나 조건문 작성 시에는 반드시 식을 정리한 결과를 작성하지 않아도 된다.
즉, i≤Math.sqrt(n)이나 (a1-c)*n0-a0≤0이 아니라 i*i≤n, a1*n0+a0≤c*n0와 같이 작성해도 된다.
💫 이 문제를 통해 배운 것
• 문제 상황을 이해하고 예외 상황을 파악하기 위해 식을 정리하고 계수를 살펴보는 습관이 필요하다.
• 그러나 조건문 작성 시에는 반드시 식을 정리한 결과를 작성하지 않아도 된다.