본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 11285. 다트 게임

N개의 화살을 던진 위치가 주어질 때, 총 몇 점을 얻었는지 계산하는 문제.

 

 

import math
 
T = int(input()) # 테스트 케이스의 수 T
ans = []
 
for test_case in range(1, T+1):
 
    N = int(input()) # 화살의 개수 N
    answer = 0
 
    for _ in range(N):
        x, y = map(int, input().split()) # 화살이 떨어진 위치 x, y
        score = math.ceil(math.sqrt(x*x+y*y)/20) # 위치에 따른 점수 계산
 
        if(score==0):
            answer += 10
        elif score <= 10:
            answer += 11-score
    ans.append(f'#{test_case} {answer}')
 
for a in ans:
    print(a)
 

 

 

[문제풀이]


 

 
 

이렇게 다트판에서 현재 위치에 따라 점수를 얻는 게임인데, 이거 좀 이상함....

특히 파이썬으론 계속 시간 초과 걸린다.

 

좌표가 어떤 영역에 있는지는 sqrt(x*x+y*y)로 반지름의 길이를 구한 후 그게 어느 영역인지 확인하면 된다.

근데 문제 자체는 간단하되 계속 시간 초과가 뜬다.

아예 DP처럼 -200, 200 사이의 모든 영역의 값을 미리 구해 출력하는 방식으로 해봐도 시간 초과가 떴다.

 

ans.append(f'#{test_case} {answer}')
 
for a in ans:
    print(a)
 

 

그래서 정답인 코드들을 살펴봤더니 이렇게 print를 리스트에 저장, 나중에 출력하는 방식이였다.

도대체 왜지.... 일반적으로 공정이 하나 더 들어가면 시간이 더 오래 걸리는게 보통 아닌가....??