반응형
문제
https://www.acmicpc.net/problem/24313
24313번: 알고리즘 수업 - 점근적 표기 1
f(n) = 7n + 7, g(n) = n, c = 8, n0 = 1이다. f(1) = 14, c × g(1) = 8이므로 O(n) 정의를 만족하지 못한다.
www.acmicpc.net
풀이
조건을 잘 확인해보고, 예제 입력을 보면 O(n)을 만족시키는 조건을 찾을 수 있습니다.
첫 번재 줄에서, a1∗n+a0 가 f(n) 입니다.
두 번째 줄에서, c 세 번째 줄에서 n0를 입력 받고, c∗n 이 g(n) 입니다.
그렇다면, a1∗n+a0≤c∗n에서 n0를 대입해서 확인해보면 되겠죠?
하지만, 한가지 조건이 더 있습니다.
바로, a0가 음수인 경우입니다.
예를들어, 5n−2≤3n 이고, n0=1 이라면?
1일 때, 만족합니다. (3≤3)
하지만, 2일 때는 만족하지 않습니다. (8≤6)
따라서 a1≤c1 이여야 합니다.
두가지 조건을 만족하면 1, 아니라면 0을 출력해주면 됩니다.
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let input = readLine()!.split(separator: " ").map { Int($0)! } | |
let a1 = input[0], a0 = input[1] | |
let c = Int(readLine()!)! | |
let n = Int(readLine()!)! | |
a1 * n + a0 <= c * n && c >= a1 ? print(1) : print(0) |
후기
a1≤c1 조건을 빼먹기가 쉬운 문제인 것 같습니다.
저도 맨 처음에는 빼먹고 작성하였고, 조건을 잘 살펴본 후, 모든 n≥n0에 만족해야 한다는 것에 힌트를 얻어 음수를 떠올릴 수 있었습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2587 대표값2 (Swift) (0) | 2023.03.07 |
---|---|
[BOJ] 백준 2750 수 정렬하기 (Swift) (0) | 2023.03.07 |
[BOJ] 백준 24267 알고리즘 수업 - 알고리즘의 수행 시간 6 (Swift) (0) | 2023.03.06 |
[BOJ] 백준 24266 알고리즘 수업 - 알고리즘의 수행 시간 5 (Swift) (0) | 2023.03.06 |
[BOJ] 백준 24265 알고리즘 수업 - 알고리즘의 수행 시간 4 (Swift) (0) | 2023.03.06 |