2024/12

Algorithm/DFS BFS

[Backjoon] 2178 - 미로탐색 (BFS)

0. 문제'''N×M크기의 배열로 표현되는 미로가 있다.미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다.이러한 미로가 주어졌을 때,(1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오.한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다.다음 N개의 줄에는 M개의 정수로 미로가 주어진다.각각의 수들은 붙어서 입력으로 주어진다.첫째 줄에 지나야 하는 최소의 칸 수를 출력한다.항상 도착위치로 이동할 수 있는 경우만 입력으로 주어진다.''''''4 610111110101010101..

Algorithm/DFS BFS

[Backjoon] 1026 - DFS와 BFS (sys.stdin.readline())

0. 문제'''그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고,더 이상 방문할 수 있는 점이 없는 경우 종료한다.정점 번호는 1번부터 N번까지이다.# 입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다.다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다.어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.# 출력첫째 줄에 DFS를 수행한 결과를,그 다음 줄에는 BFS를 수행한 결과를 출력한다.V부터 방문된 점을 순서대로 출력하면 된다.'''..

Algorithm/DFS BFS

[이.코.테] DFS/BFS

대표 문제 유형1. 경로탐색 유형 (최단거리, 시간)2. 네트워크 유형 (연결)3. 조합 유형 (모든 조합 만들기)  DFSBFS알고리즘 검증동작 검증을 하기 쉬움어려움 코드 간결, 버그 발생할 가능성 적음 수행 시간복불복대박날 확률도 적지만 쪽박 찰 확율도 적다= 시간 복잡도높다낮다문제 난이도쉬운 문제일 경우 추천난이도 있어보이거나 DFS로 풀기 오래걸릴 것 같은 경우 추천  => 한 문제를 두 방식으로 풀어보며 익혀두기 백준 연습 문제1260 -- DFS와 BFS : 그래프에서 DFS / BFS 연습2606 -- 바이러스 : 그래프에서 DFS 활용 연습2667 -- 단지번호붙이기 : DFS를 이용한 Flood Fill 연습2178 -- 미로탐색 : BFS로 4방향 탐색 연습7569 -- 토마토 : B..

Algorithm/DFS BFS

[이.코.테] DFS/BFS 사전 학습 -- 스택, 큐, 재귀 함수

DFS/BFS 는 대표적인 탐색 알고리즘이다.탐색이란, 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정이다.그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다루기 때문에기본 자료구조인 스택과 큐에 대해 제대로 이해하고 있어야 한다. 자료구조란, 데이터를 표현하고 관리하고 처리하기 위한 구조이다. 스택과 큐의 자료구조는 삽입(Push), 삭제(Pop), 오버플로, 언더플로 등을 고려해야 한다.** 오버플로 - 수용 크기가 가득 찬 상태에서 삽입 연산 수행시 발생** 언더플로 - 데이터가 전혀 없는 상태에서 삭제 연산 수행시 발생 1. 스택 (Stack)- 선입후출, 후입선출 (ex. 박스 쌓기) stack = []stack.append(5)stack.append(2)stack.append(..

Algorithm/Implementation

[이.코.테] 구현 (2) -- 시각, 왕실의 나이트, 게임 개발

1. 시각처음엔 시간 따로, 분 따로, 초 따로 정수를 체크했는데 ,계속 답이 맞기 않길래 슬쩍 답지 봤더니 .. 체크를 마지막에 한 번만 하더라. # 정수 N이 입력되면# 00시 00분 00초 부터 N시 59분 59초까지의 모든 시각 중에서# 3이 하나라도 포함되는 모든 경우의 수를 구하라# hour : 00 ~ N# minute : 00 ~ 59# second : 00 ~ 59def case_include_3(): cnt = 0 num = input("5 -- ") for h in range(int(num)+1): for m in range(60): for s in range(60): # 매 시각 안에 '3'이 포함되어 있다면..