죽일거다 안전영역,,,,, 별것도 아닌걸로 내가 얼마나 개고생을 했는지 적어보도록 하자,,,, ✔️ 알고리즘 그래프 이론 브루트포스 알고리즘 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 결론부터 말하자면 이번 문제에서는 Queue 모듈과 문제에서 요구하는 바를 꼼꼼하게 구현하지 못했던 것이 미스테이크였다. ✔️ 접근방법 1. 입력 받은 지역 높이의 종류를 확인하여 해당 높이를 기준으로 기준보다 높으면 안전영역, 그렇지 않으면 침수영역으로 판단. 따라서 입력받은 지역의 높이를 저장한 2차원 리스트를 중복이 불가능한 자료형인 집합에 저장. 하지만 안전영역의 기준 높이가 1이상 일 수 있기 때문에 집합에 0을 추가. 2. 높이가 저장되어 있는 집합을 순회하면서 해당 높이를 기준으로 더 높은 지역들은 안전영역으..
알고리즘
✔️알고리즘 그래프 이론 그래프 탐색 너비 우선 탐색 ✔️ 실패한 접근방법 1. DFS 로 탐색. 한 좌표에서 동서남북 모든 길을 재귀호출로 탐색 2. 이동할 때마다 count 를 +1 해주고 만약 길을 되돌아올 경우 count 를 -1 해줌 3. 풀이는 가능하지만 재귀호출이 너무 많아 시간초과 ( ** 가지치기 시도해보고 싶었으나 진행 X) from copy import deepcopy import sys import queue #sys.setrecursionlimit(1000000) class Maze: def __init__(self, graph, visited, find_x, find_y): self.graph = graph self.visited = visited self.find_x = fin..
💡깊이 우선 탐색 (DFS) 그래프의 위에서 아래로 가장 깊은 곳을 방문하는 탐색법 한 방향으로 갈 수 있는데까지 가다가 길이 없으면 다시 돌아와 갈 수 있는데까지 가는 방법을 반복 어떤 노드를 방문 했었는지 검사 필요 스택 이나 재귀호출 방식을 사용해 구현 ✔️ 입력값 저장 인접리스트(링크드 리스트) 사용 인접 행렬 사용(2차원 행렬 사용) 큐 사용 1. 각 정점에 연결된 노드를 2차원 배열에 넣어준다. (양방향) ex. 1-2 이면 정점1에는 2를, 정점2에는 1을 넣어준다. 2. 만약 정점을 작은 순으로 탐색하고자 하면 오름차순으로 정렬해준다. 3. 탐색 시작 정점부터 탐색해 나가는데 시작 정점 배열의 size() 만큼 반복문을 돌린다. 4. 한 정점을 탐색한 후 해당 정점에 인접한 방문하지 않은 ..
✔️알고리즘 구현 자료구조 큐 ✔️접근방법 1. 덱을 사용해 반복할때마다 3번째 요소가 가장 앞에 오도록 rotation해준 후, pop 해준다. from collections import deque N, K = map(int, input().split()) deq = deque() # deque객체 생성 for i in range(N): # deque에 1~N까지 삽입 deq.append(i+1) for i in range(N): deq.rotate(-(K-1)) #3번째 요소가 가장 앞에 오도록 rotation if (i == 0): print('') break print(', ',end="") ✔️배운점/어려운점 1. 부끄럽지만 여태 원형큐 구현 방법을 습득하지 못해 다시 공부했다. 1) front..