https://www.acmicpc.net/problem/30648
알고리즘
한 좌표에 두송이의 꽃이 피어있게 되는 시간을 구하는 문제이다.
우리가 기억해야 할것은
- 다음 꽃이 필 자리에 꽃이 존재하는가
- 현재 꽃이 핀 위치와 다음에 꽃이 필 위치
를 기억해주고, 반복문을 통해 시간을 구해주는 방식으로 코드를 구성하였다.해당 좌표에 꽃이 있는지 확인할 배열, 다음 꽃이 필 위치 좌표 변수를 통해 해당 위치에 꽃이 존재했다면 반복문을 종료하고 시간을 출력해주었다.해당 위치에 꽃이 존재하지 않았다면 다음 꽃이 필 좌표를 계산해주는데, x+y+2가 r보다 작으면 다음 꽃이 필 위치는 x+1, y+1이고
x+y+2가 r보다 크면 다음 꽃이 필 위치는 x%2, y%2이고, 소수점은 버리므로 //로 정수형을 만들어준다.
코드
import sys
input = sys.stdin.readline
a,b = map(int,input().split())
r = int(input())
time = 0
arr = [[0 for _ in range(r)] for i in range(r)]
next_y = a
next_x = b
while True:
arr[next_y][next_x] += 1
if arr[next_y][next_x] > 1:
break
if (next_x+next_y+2) < r:
next_x = next_x + 1
next_y = next_y + 1
else:
next_x = next_x // 2
next_y = next_y // 2
time += 1
print(time)
'Koala - 17기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/Python] 21608번: 상어 초등학교 (0) | 2025.01.26 |
---|---|
[백준/Python] 2003번: 수들의 합 2 (0) | 2025.01.26 |
[BOJ/Python3] 2842번 : 집배원 한상덕 (0) | 2025.01.26 |
[백준/Python] 14465번 : 소가 길을 건너간 이유 5 (0) | 2025.01.26 |
[백준/C++] 2531번: 회전 초밥 (0) | 2025.01.24 |