알고리즘 66

[baekjoon] 백준 16928번 : 뱀과 사다리 게임 (by python 파이썬) BFS

https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 정답 code #뱀과 사다리 게임 from collections import deque import sys input = sys.stdin.readline def bfs(v): queue = deque() queue.append(v) visit[v] = 1 while queue: target = queue.popleft() for i in range(..

[baekjoon] 백준 16236번 : 아기 상어 (by python 파이썬) bfs, lambda정렬

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 정답 code #아기 상어 from collections import deque import sys input = sys.stdin.readline dx = [-1,1,0,0] dy = [0,0,1,-1] def bfs(x,y,shark_size): distance = [[0]*n for _ in range(n)] #거리 저장 visit = [[0]*n for _ in range(n)] #..

[baejoon] 백준 14500번 : 테트로미노 (by python 파이썬) BFS

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 정답 code #테트로미노 import sys input = sys.stdin.readline def dfs(r,c,bcount,total): global ans #종료조건1 - 최댓값에 못미치는 경우 if ans >= total + max_value * (3-bcount): return #종료조건2 - 블럭 4개를 모두 활용한 경우 if bcount == 4: ans = max(ans, tota..

[baekjoon] 백준 11727번 : 2*n 타일링 2 (by python 파이썬) 다이나믹 프로그래밍

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 정답 code # 2*n 타일링 2 import sys input = sys.stdin.readline n = int(input()) cnt = [1,3] for i in range(2,n+1): cnt.append( cnt[i-1] + cnt[i-2]*2) print(cnt[-2]% 10007) solution 전에 11726번 2*n타일링에서 유사한 문제를 풀었을때 규칙을 이용해 풀었던 기억이 있어 이 문제 역시 규칙을 찾..

[baekjoon] 백준 11659번 : 구간 합 구하기 4 (by python 파이썬) 구간합

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 정답 code #구간 합 구하기 import sys input = sys.stdin.readline n, m = map(int,input().split()) num = list(map(int,input().split())) sum_list = [0] total = 0 for i in range(len(num)): total += num[i] sum_list.append(to..

[baekjoon] 백준 11403번 : 경로 찾기 (by python) 플로이드-워셜

https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 code #경로 찾기 n = int(input()) graph = [] for i in range(n): graph.append(list(map(int,input().split()))) for k in range(n): for i in range(n): for j in range(n): if (graph[i][k] == 1 and graph[k][j] == 1): graph[i][j] = 1 for i in graph: for j i..

[baekjoon] 백준 11047번 : 동전 0 (by python) 그리디

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 정답 code #동전 0 import sys input = sys.stdin.readline n, k = map(int,input().split()) coin = [] for i in range(n): coin.append(int(input())) coin.sort(reverse=True) cnt = 0 for c in coin: i..

[baekjoon] 백준 9461번 : 파도반 수열 (by python)

https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 정답 code #파도반 수열 import sys input = sys.stdin.readline pado = [0 for _ in range(101)] for i in range(1,101): if i == 1: pado[i] = 1 elif i == 2: pado[i] = 1 elif i == 3: pado[i] = 1 elif i == 4: pado[i] = 2 elif i == 5: pado[i]..

[baekjoon] 백준 9375번 : 패션왕 신혜빈 (by python) 딕셔너리

https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 정답 code #패션왕 신해빈 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) clo = {} for _ in range(n): wear = list(input().split()) if wea..

[baekjoon] 백준 9019번 : DSLR (by python) bfs *pypy3

https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 정답 code # DSLR from collections import deque import sys input = sys.stdin.readline t = int(input()) for _ in range(t): a,b = map(int,input().split()) q = deque() q.append((a,"")) visit = [False]*10000 while q: num, p..