■ 24313번 알고리즘 수업 - 점근적 표기 1 문제
■ 코드 풀이
처음 문제를 제대로 읽고 풀지 않아서, 오답이 나와서 한참 헤매다 드디어 풀었습니다. 이래서 문제를 잘 읽어야 하나 싶네요. 우선 아래는 정답 코드입니다.
a1, a0 = map(int, input().split())
c = int(input())
n0 = int(input())
if ((a1*n0 + a0 <= c*n0)) and (a1<=c):
print(1)
else:
print(0)
처음 제가 풀었던 코드에서 에러가 나왔던 이유는 "a1 <=c"를 안 써줬기 때문입니다. 이 조건이 추가되어야 하는 이유는 문제에 있습니다. 문제에서 제시하기를, n0와 c는 양수이지만 a0, a1은 음수도 가능합니다. "a1 <=c" 조건이 있고 없고의 차이는 "반레조건: a1 = 10, a0 = -100, c = 7, n0 = 1"를 직접 넣어보시면 알 수 있습니다. "a1 <=c" 조건이 있을 때는 0으로 출력하지만 없을 때는 1로 출력합니다.
참고로 "g(n) = n"인 이유도 문제에 있습니다. 빅-오 표기법을 O(g(n))으로 한다고 정의하고, 조건 하에서 O(n)이 정의를 만족하는지 구하라고 문제에서 요구하고 있으므로, "g(n) = n"이 될 수밖에 없습니다.
'코딩 테스트 > Python_백준' 카테고리의 다른 글
[백준/Python] 2231번 분해합 문제 (0) | 2023.05.03 |
---|---|
[백준/Python] 2798번 블랙잭 문제 (0) | 2023.05.02 |
[백준/Python] 24267번 알고리즘 수업 - 알고리즘의 수행 시간 6 문제 (0) | 2023.04.30 |
[백준/Python] 24266번 알고리즘 수업 - 알고리즘의 수행 시간 6 문제 (0) | 2023.04.29 |
[백준/Python] 24265번 알고리즘 수업 - 알고리즘의 수행 시간 4 문제 (0) | 2023.04.28 |
댓글