백준 24313번 풀이

문제

https://www.acmicpc.net/problem/24313

직접 가서 보십시오. 난 당최 뭔 소린지 모르겠음.

Reference

https://everyday-image-processing.tistory.com/520

풀이

이 문제를 본 본인 표정:

김구라짤 아니냐고요? 아니 이해도 못했다니까? 김구라짤은 그래도 뭔 문제인지 이해는 했다는 얘기예요. 근데 이건 아녀.

일단 일차식이 하나 주어진다. 그리고 c랑 n0은 뭐냐… 이 문제에서 최종적으로 확인해야 하는 건 일차식 일차항 계수와 y절편이 주어지면 일차함수 나와요 안나와요? 나옵니다. 그 일차식 일차항 n에 n0부터 100까지의 값을 넣어서 f(n) < g(n)인지를 보면 되는 문제다. 그리고 g(n) = n이므로 c * n이 된다.

예시를 보면 똑같은 일차식인데 1부터 할때는 조건을 만족하지 못하고 10부터 조건을 만족한다고 하는데… 이게 왜 이러냐… f(1) = 14, f(2) = 21 이런 식으로(f(0)이 7이다) 1부터 9까지는 f(n)이 8n보다 크다. 그러다가 10이 되면 f(10) = 77이고 8n은 80이 되기 때문에 f(n)이 8n보다 작아지게 된다.

import sys

a, b = map(int,sys.stdin.readline().split()) # 순서대로 a1 a0
c = int(sys.stdin.readline())
n = int(sys.stdin.readline()) # n0

flag = 1
for i in range(n,101):
    if a * i + b > c * i:
        flag = 0
        break

print(flag)

flag가 왜 있냐면 조건을 만족하지 못할 때는 print(0) break를 쓰면 0 하나만 나오고 끝난다. 근데 조건을 만족하면 1이 줄창 나온 다음에 끝나그덩. 그러니까 flag를 1(True)로 설정해놓고 조건에 부합하지 않으면 flag를 0(False)으로 바꾸고 빠져나오면 되고(하나라도 안 맞으면 그냥 0), 조건에 부합하면 다 돌고 나와서 flag를 그대로 출력하는 구조.

근데 이런게 더 있을까봐 두렵다… 진짜… 이차원 배열때는 뭔지 알겠는데 어떻게 함? 이었는데 이거는 보자마자 이게 뭔 소린가 싶더라..