Algorithm(116)
-
[Python/solved.ac] 2178번 : 미로 탐색
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net import sys from collections import deque n, m = map(int, input().split()) maze = [] for _ in range(n): maze.append(list(map(int, sys.stdin.readline().rstrip()))) def bfs(x,y): # 상하좌우 이동 좌표 설정 bx = [1,-1,0,0] by = [0,0,1,-1] # 시작점 좌표를 큐에 삽입 q..
2022.08.14 -
[Python/solved.ac] 11724번 : 연결 요소의 개수
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net # 아이디어 # 먼저 연결 요소를 인접리스트로 생성 # 각 노드에 대해 DFS import sys # 재귀 최대깊이 설정 sys.setrecursionlimit(10000) n, m = map(int, input().split()) arr = [[] for _ in range(n+1)] visited = [False for _ in r..
2022.08.13 -
[Python/solved.ac] 2667번 : 단지번호붙이기
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net # 아이디어 # dfs, 이웃 여부를 확인하기 위해 상하좌우로 재귀호출 # 좌표를 넘어가거나, 집이 없는 경우 종료 # 집이 있고, 아직 방문하지 않은 경우에는 cnt + 1 n = int(input()) visited = [[0 for j in range(n)] for i in range(n+1)] houses =[] for i in range(n): houses.append(list(map(in..
2022.08.11 -
[Python/solved.ac] 1449번 : 수리공 항승
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net # 아이디어 # 정수 리스트를 정렬 # 인접한 곳을 같이 막으려면, 다음 새는 위치까지의 거리가 현재위치 + 테이프의길이(L -1) 보다 작거나 같은 경우에만 적용 # 따라서 현재위치로부터 가장 덮을 수 있는 먼거리가 어딘지를 확인하면서 카운팅 n, L = map(int, input().split()) pipe = list(map(int, input().split())) pipe...
2022.08.09 -
[Python/solved.ac] 1543번 : 문서 검색
https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net # 아이디어 # 타겟이 시작지점,끝지점을 얻은 후, 문서의 [시작:끝] 슬라이싱 정보와 비교 # 종료 시점은 end가 문서의 길이보다 클때 # 일치하면, cnt 증가 후 시작지점은 끝지점, 끝지점은 타깃 길이만큼 추가 # 불일치하면, 시작,끝지점 모두 +1 doc = input() target = input() start = 0 end = len(target) cnt = 0 while len(doc) ..
2022.08.08 -
[Python/solved.ac] 1049번 : 기타줄
https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net # 아이디어 # 패키지로 사는 경우의 최저가, 낱개로 사는 경우의 최저가를 구함 # 패키지의 경우는 낱개*6 가격도 비교한다. # 최저가를 구한 뒤 n을 6으로 나눈 몫, 즉 구매할 패키지 개수 만큼 패키지 최저가를 곱하여 비용 계산 # 나머지 낱개들은 전부 낱개 가격으로 사거나, 패키지 1개를 사는 경우 중 최저가를 선택하여 비용 계산 # n, m = map(int, input().split..
2022.08.07