jyamethyst21 님의 블로그

백준 3034번 - '앵그리 창영' (PYTHON 풀이) 본문

CODING 💻

백준 3034번 - '앵그리 창영' (PYTHON 풀이)

jyamethyst21 2026. 3. 28. 15:26

문제:

 

해당 문제는 박스에 성냥을 넣었을 때 들어가는지 아닌지를 하나씩 검사해서 여부를 출력하는 문제이다.

 

필자는 처음 해당 문제를 보았을 때, 면적을 구해서 성냥이 들어가는지 아닌지만 확인하면 되는줄 알았다. 즉 1차원의 직사각형 모양에 성냥을 던졌을 때 들어가는냐를 보는줄 알았다.

그러나 그것이 아니라 박스가 입체로 되어있다고 생각하고 거기에 성냥을 넣었을 때 잘 들어가는지를 보아야하는 문제였다.

들어가면 DA를, 안 들어가면 NE를 출력하면 된다.

 

풀이:

import math

N, W, H = map(int,input().split())
for i in range(N):
    leng = int(input())
    if leng <= math.sqrt((W**2) + (H**2)):
        print("DA")
    else:
        print("NE")

파이썬의 math 라이브러리를 import하면 루트를 씌우는 함수인 sqrt를 활용할 수 있다.

앞서 말한 것처럼 사각형 내에 성냥이 들어가는지를 보려면, 대각선의 길이를 활용해야 한다.

즉, 박스가 상기 그림에서 파란색, 성냥이 빨간색이라면 성냥의 대각선 길이인 초록색 선을 기준으로 들어가는지 아닌지를 판단할 수 있다.

직사각형의 대각선 길이는 아래와 같다.

직사각형 대각선 길이 공식

 

가로와 세로는 사용자가 입력하는 값이기 때문에 이를 활용하면 상기 코드와 같아진다.

그래서 leng에 검사하고자 하는 성냥의 길이를 넣고 위 공식을 그대로 적은 식과 비교해서 식보다 작다면 DA를(박스에 들어갈 수 있음), 아니라면 NE(박스에 못 들어감)를 출력하면 쉽게 풀 수 있다.