반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준] 백준 30891번 볶음밥 지키기 파이썬(Python)

1) 문제번호 : 30891

 

2) 문제 출처

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

 

30891번: 볶음밥 지키기

$X, Y$가 모두 정수인 좌표 중 가장 많은 밥알을 지킬 수 있는 웍의 중심 좌표를 출력합니다. 가능한 답이 여러 가지인 경우, 그 중 아무거나 하나만 출력해 주세요.

www.acmicpc.net

 

2. 풀이

- 이 문제는 구현 문제인데, 문제에서 제시된 수식을 사용하여 중심 좌표를 x 좌표 기준으로 최소값과 최대값을 두고 거리를 비교하여 R보다 작거나 같을 경우 tempCnt를 늘린다.

- tempCnt가 실제 최대 Cnt보다 클 경우에 중심좌표를 변경하여 출력하면 된다.

 

3. 소스 코드

import sys
import math
input = sys.stdin.readline

N, R = map(int, input().split())

xList = []
yList = []

for _ in range(N) : 
    x, y = map(int ,input().split())
    
    xList.append(x)
    yList.append(y)

minX = min(xList)
maxX = max(xList)

cnt = -100
resultX = 0
resultY = 0

for i in range(minX, maxX + 1) : 
    for j in range(minX, maxX + 1) : 
        tempCnt = 0
        for x, y in zip(xList, yList) : 
            r = math.sqrt((i - x)**2 + (j - y)**2)
            
            if r <= R : 
                tempCnt += 1
        
        if cnt < tempCnt : 
            cnt = tempCnt
            resultX = i
            resultY = j

print(resultX, resultY)

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기