문제 설명 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 풀이 가장 기본적인 BFS 문제 경로의 최단 거리를 구하는 문제이기 때문에 BFS로 풀었다 만약 경로가 몇 가지인지를 묻는다면 DFS로..! 미로 범위에서 벗어난 경우이거나, 이동할 수 없는 칸을 무시하고 해당 칸을 처음 방문했을 때 이전 지점까지의 최단거리 + 1 해주었다 from collections import deque def bfs(x, y): queue = deque() queue.append((x, ..
알고리즘
대표 문제 유형 경로 탐색 (최단 거리, 시간) 최단 거리 : BFS 경로의 가짓수(경우의 수) : DFS 네트워크 (연결) 조합 (모든 조합 만들기) 구현 방법 DFS : Stack, 재귀함수 BFS : Queue, LinkedList 무방향 그래프 # 각 노드가 연결된 정보를 표현 (2차원 리스트) # 보통 문제에서 1부터 시작하기 때문에 인덱스 0은 비워둠 graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7] ] # 각 노드가 방문된 정보를 표현 (1차원 리스트) visited = [False] * 9 DFS (Depth First Search) DFS를 설명할 때는 보통 ‘번호가 낮은 인접 노드부터 방문..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음에는 유효기간을 년, 월, 일 전부 구하려고 애를 먹었는데... 풀이하다 막혀서 문제를 다시 읽어보니까 굳이 정확한 일자를 구할 필요가 없다고 생각했다. 약관의 타입을 찾는 시간을 줄이기 위해, 편하게 찾기 위해 딕셔너리를 사용하였다. 개인정보의 년, 월, 일을 구한 다음에 약관의 유효 기간을 더해주었고, 더한 값이 12의 배수면 12월로 만들어줘야 하기 때문에 if문으..