jyamethyst21 님의 블로그

백준 25238번 - '가희와 방어율 무시' (PYTHON 풀이) 본문

CODING 💻

백준 25238번 - '가희와 방어율 무시' (PYTHON 풀이)

jyamethyst21 2026. 2. 19. 00:01

문제:

 

방어율과 방무가 주어질 때, 유저가 몬스터에게 데미지를 줄 수 있는지 없는지 알려주는 문제이다.

이때 유저가 체감하는 몬스터의 방어율 수치가 100보다 크거나 같으면 몬스터에게 데미지를 줄 수 없고 이 경우 0을, 그렇지 않으면 1을 출력해야한다.

 

풀이:

a,b = map(int,input().split())
if a * (100 - b) >= 10000:
    print(0)
else:
    print(1)

우선 정답 코드는 다음과 같다.

 

a,b = map(int,input().split())
re = a * (1 - (0.01 * b))

if re >= 100:
    print(0)
else:
    print(1)

필자는 처음에 위 코드와 같이 작성했는데 자꾸 틀리다고 떠서 뭐가 문제인지 찾아보았다.

0.01 때문에 실수형으로 계산이 되는데 이게 문제가 될 수도 있다고 해서 int형으로 풀 수 있는 방법을 고민했다.

 

그래서 결과적으로 할인가를 구하는 공식을 정리했다.

가격 * (100 - 할인율) / 100 (%)
문제에서는 위 공식이 100보다 크거나 같은지를 봐야하므로 정리하면 다음과 같다.

가격 * (100 - 할인율) / 100 >= 100
-> 가격 * (100 - 할인율) >= 10000 (좌변의 100을 없애기 위해 양변에 100씩 곱함)

 

최종적으로 '가격 * (100 - 할인율) >= 10000' 와 같은 공식이 도출되고 이를 입력값 a,b를 활용해서 작성하면 다음과 같다.

'a * (100 - b) >= 10000' 

 

그래서 만약 이 값이 10000을 넘거나 같으면 (100을 넘거나 같으면) 0을, 그렇지 않으면 1을 출력하도록 로직을 작성하면 된다!