Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 비트마스킹
- 2020 KAKAO BLIND RECRUITMENT
- 구현
- 최소 신장 트리
- SWEA
- 프로그래머스
- 플로이드 와샬
- 플로이드와샬
- 시뮬레이션
- 투포인터
- 조합
- 2021 KAKAO BLIND RECRUITMENT
- 이분탐색
- 2019 KAKAO BLIND RECRUITMENT
- GIT
- 2018 KAKAO BLIND RECRUITMENT
- 백트래킹
- 우선순위큐
- 다익스트라
- 백준
- 스택
- 트라이
- 파이썬
- 2020 카카오 인턴십
- BFS
- 브루트포스
- 로봇 청소기
- 투 포인터
- Spring
- 크루스칼
Archives
- Today
- Total
개발조아
[BOJ/백준] 7573 고기잡이 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/7573
문제는 간단하지만 겨우겨우 18번만에 푼 문제이다.
풀다풀다 모르겠어서 다른분들의 알고리즘을 참고하고 해결하였다.
N이 10000이므로 배열에 다 넣고 돌리면 당연히 시간초과가 난다.
그러니 물고기에만 주목하면 된다.
모든 물고기에 대해서 그 물고기가 그물 테두리에 겹치도록 그물을 펼친 후 그 범위안에 들어오는 물고기를 세주면 된다.
현재 물고기의 좌표를 끝점, 현재 그물의 크기만큼 뺀값을 시작점으로 하는 사각형을 그렸을 때 테두리에서 그물을 펼치면 해당 물고기가 항상 테두리에 걸치도록 그물이 펼쳐진다.
현재 물고기가 3,3에 있고 그물의 크기가 3x3 이라면 시작점은 0,0 끝점은 3,3인 사각형의 테두리에서 그물을 펼치면 된다. 그리고 해당 그물을 펼쳤을 때 그 그물안에 들어오는 물고기의 개수를 세주면 된다.
그물을 펼칠때 주의할 점은 그물이 주어진 범위안에 들어오는지 체크해줘야한다. 만약 벗어났다면 해당 점은 지나가도록 구현했다.
from sys import stdin
input = stdin.readline
dx = [0,1,0,-1]
dy = [1,0,-1,0]
n,l,m = map(int, input().split())
fish = []
answer = 0
for _ in range(m):
x,y = map(int, input().split())
fish.append((x-1,y-1))
def solv():
for sx,sy in fish:
for l1 in range(1,l//2):
l2 = l//2-l1
move_net(sx-l1, sy-l2, l1, l2)
print(answer)
def move_net(sx,sy,l1,l2):
global answer
d = 0
l1_cnt, l2_cnt = l1, l2
while d != 4:
if d in [1, 3]:
sx += dx[d]
l1_cnt -= 1
if l1_cnt == 0:
l1_cnt = l1
d += 1
else:
sy += dy[d]
l2_cnt -= 1
if l2_cnt == 0:
l2_cnt = l2
d += 1
if sx >= 0 and sy >= 0:
ex = sx + l1 + 1
ey = sy + l2 + 1
answer = max(answer, count_fish(sx, sy, ex, ey))
def count_fish(sx,sy,ex,ey):
cnt = 0
if ex > n or ey > n:
return 0
for x,y in fish:
if sx <= x < ex and sy <= y < ey:
cnt += 1
return cnt
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 16927 배열 돌리기 2 파이썬 (0) | 2021.09.06 |
---|---|
[BOJ/백준] 16434 드래곤 앤 던전 파이썬 (0) | 2021.09.05 |
[BOJ/백준] 11967 불켜기 파이썬 (0) | 2021.08.31 |
[BOJ/백준] 7490 0 만들기 파이썬 (2) | 2021.08.30 |
[BOJ/백준] 14938 서강그라운드 파이썬 (0) | 2021.08.30 |
Comments