코딩테스트/백준 문제

[파이썬] 백준 3034번(브론즈3) : 앵그리 창영

김뚱입니다 2025. 5. 19. 04:34

[문제]

문제 : 백준 3034번_앵그리 창영

 

 

 

[코드]

import sys, math
input = sys.stdin.readline

N, W, H = map(int, input().split())

# 성냥 박스의 대각선 길이를 생각해야함
diagonal = math.sqrt(W**2 + H**2)

for _ in range(N):
    match = int(input().strip())
    
    # 성냥 박스의 대각선 길이보다 성냥이 짧으면 문제가 없음
    if diagonal >= match:
        print("DA")
    else:
        print("NE")

피타고라스 정리로 성냥 박스의 대각선 길이를 생각해야 했다.

 

 

 

[리팩터링 코드]

import sys
input = sys.stdin.readline

N, W, H = map(int, input().split())
max_length_squared = W * W + H * H

for _ in range(N):
    match = int(input())
    if match * match <= max_length_squared:
        print("DA")
    else:
        print("NE")

이렇게 하면 math 라이브러리 없이도 풀 수 있다.

sqrt() 계산을 생략해서 더 빠르고 제곱으로만 비교한다.

 

 

 

[제출 결과]