본문 바로가기
코딩 테스트/Python_백준

[백준/Python] 24313번 알고리즘 수업 - 점근적 표기 1 문제

by 모두의 케빈 2023. 5. 1.

■ 24313번 알고리즘 수업 - 점근적 표기 1 문제

 

출처: 백준 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"이 될 수밖에 없습니다.

댓글