언젠가는 펼쳐 볼 아카이브
[BOJ] 24313번 - 알고리즘 수업 - 점근적 표기 1 본문
사용언어 : javascript - node.js
# 문제
#접근방법
문제에서 제시한 O-표기법을 식으로 표현하면 다음과 같다.
a1*n + a0 <= c*n
((a1-c)n + a0 <= 0) === ((a1-c)n0 + a0 <= 0)
위 식을 토대로 입력으로 들어온 a1, a0, n0, c 값을 이용해 O(n)의 정의를 코드로 구현하면 된다.
여기서 주의해야 할 점은, (a1-c) 부분이 양수일 경우, 전체 식의 결과가 "0이거나 음수"가 아닌 값(<=0)이 나올 수 있는 상황이 존재 한다.
따라서 (a1-c) 값은 항상 0보다 작아야 하는 조건을 추가해줘야 한다.
#제출코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const [aList, c, n0] = fs.readFileSync(filePath).toString().trim().split('\n');
const [a1, a0] = aList
.trim()
.split(' ')
.map((item) => +item);
console.log(solution(a1, a0, +c, +n0));
function solution(a1, a0, c, n0) {
const fn = a1 * n0 + a0;
const gn = c * n0;
return fn <= gn && a1 - c <= 0 ? 1 : 0;
}
'IT > Baekjoon Oline Judge' 카테고리의 다른 글
[BOJ] 2231번 - 분해합 (0) | 2024.01.09 |
---|---|
[BOJ] 2798번 - 블랙잭 (0) | 2023.11.21 |
[BOJ] 24267번 - 알고리즘 수업 (알고리즘의 수행 시간6) (0) | 2023.09.20 |
[BOJ] 24266번 - 알고리즘 수업 (알고리즘의 수행 시간5) (0) | 2023.09.20 |
[BOJ] 24265번 - 알고리즘 수업 (알고리즘의 수행 시간4) (0) | 2023.09.20 |