Algorithm Boj 2568

문제 안전 영역 시도 생각 나는 방법 핵심 물뿌리기 안전 영역 구하기 1-2 가장 큰거까지 반복 물뿌리기 n,n 찾아 보기 N^2 안전 영역 구하기 dfs로 돌면서 찾기 N^2 가장 큰거 까지 반복 M 시간 복잡도 N^3 필요 상수 diresctions 필요 변수 visit map input 코드 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 import sys sys....

October 30, 2023 · 2 min · 308 words · Crispy

Algorithm Boj 2638

문제 치즈 문제 풀이 하기 방법 1 생각 가볍게 녹을 치즈 찾기 녹이기 1,2번 반복 녹을 치즈 찾기 bfs로 치즈 아닌 부분 찾기 윤곽중 2면 이상 치즈 아닌 부분 맡닿은거 마크 지우기 필요한 상수 direction 필요한 변수 치즈 아닌 부분 저장할 list 치즈 아닌 부분 탐색할 queue 마크 저장할 list 맵 저장할 list 시간 복잡도 bfs N^2 N일듯 => N^3 코드 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 from collections import deque n, m = list(map(int, input()....

October 29, 2023 · 2 min · 370 words · Crispy

Algorithm Boj 2146

문제 다리 만들기 문제를 생각해 보자. 1. 생각나는 대로: 대강 대륙은 갈 수 없는 곳 대륙 옆이 길이 1로 설정 bfs로 모두 돌면서 다른 대륙 도달하기 자세히 대륙 별로 대륙 가를 1자로 한다. visit을 나타낼때 출발지, 거리를 나타낸다. 만난 곳이라면 거리를 더해서 min에 저장한다. min을 출력한다. 시간 복잡도 N^2 0인 곳 + 상하좌우에 대륙있는 곳 n^2 탐색 같은 대륙 출발 대륙 통과 바다 짧은 데 다른 대륙 계산 시도 1 문제 대륙이 통과하면 만나지를 못한다....

October 26, 2023 · 1 min · 89 words · Crispy

Algorithm Boj 16236

문제 아기 상어 해결 방법을 생각해 보자. 방법 1: 생각 나는 대로: 기본 로직 물고기 크기/위치를 기준으로 정렬한다. 먹을 수 있는 물고기만 담는다. 거리를 계산한다. 가장 짧은 거리의 물고기만 먹는다. 먹은 수대로 상어 크기를 올린다. 핵심 로직 상어의 성장 여부 확인 먹을 수 있는 물고기만 담기 거리 계산하기 bfs로 탐색하기 글로벌 변수 먹은 물고기 수 상어 성장 여부 판단 상어 크기 상어 위치 시간 순차 로직 상어 위치 찾기 bfs탐색하며 왼 위 아래 오른쪽 순 돌기 가장 먼저 탐색 된 상어 크기보다 작은 물고기 섭취 물고기 섭취 불가시 종료 상어 성장 여부 판단 이동 시간 기록 1 - 4 반복 코드...

October 24, 2023 · 2 min · 425 words · Crispy

Algorithm Boj 14502

문제 연구소 접근 방법을 생각해보자. 방법 1: 생각나는 것: ~47분 바이러스 위치 확인하기 빈칸 위치 확인하기 빈칸 nC3 으로 위치뽑기 바이러스 위치 기준으로 돌면서 dfs로 맵 채우기 전체 - 바이러스 - 벽수로 빈값 구하기 빈값 크기 비교 하기 (n * m)C3 * (n * m) => 약 266만 구현 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 directions = [ [0,1], [0,-1], [1,0], [-1, 0] ] def dfs(x,y, visited): global n,m, lab_map; for i in range(4): nx = x + directions[i][0] ny = y + directions[i][1] if nx < 0 or ny < 0 or nx >= n or ny >= m: continue if lab_map[nx][ny] !...

October 23, 2023 · 2 min · 315 words · Crispy