백준 153

[백준] 20057 마법사 상어와 토네이도 python

https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net import sys; input = sys.stdin.readline def sand_move(pos, direction_ind, matrix): rate = [2, 10, 7, 1, 5, 10, 7, 1, 2] sand_matrix = [ [(-2, 0), (-1, -1), (-1, 0), (-1, 1), (0, -2), (1, -1), (1, 0), (1, 1)..

STUDY/Algorithm 2021.07.20

[백준] 1916 최소비용 구하기 python

https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net import sys; input = sys.stdin.readline from heapq import heappop, heappush inf = 100000000 # 최대값 (max(N)-1) * max(w) N = int(input()) # 1000 M = int(input()) # 100000 link_list = [list() for _ in range(N ..

STUDY/Algorithm 2021.07.15

[백준] 14503 로봇 청소기 python, C

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net import sys; input=sys.stdin.readline N, M = map(int, input().split()) r, c, d = map(int, input().split()) room = [list(map(int, input().split())) for _ in range(N)] clean = [[0 for _ in range(M)] for _ in range(N)] directi..

STUDY/Algorithm 2021.07.13

[백준] 2671 잠수함 식별 python

https://www.acmicpc.net/problem/2671 2671번: 잠수함식별 입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고 www.acmicpc.net import re s = input() p = re.compile('(100+1+|01)+') m = p.fullmatch(s) if m: print("SUBMARINE") else: print("NOISE") 정규표현식을 사용해서 푸는 문제이다 조건문을 사용해서 풀었으나 답이 나오지 않아 검색을 해서 풀었다. 파이썬 에도 정규표현식을 사용할수 있는 내장함수가 있었고 이를 사용해서 쉽게 풀수있었다..

STUDY/Algorithm 2021.05.30

[백준] 2670 연속부분 최대곱 python

https://www.acmicpc.net/problem/2670 N = int(input()) nums = [float(input()) for _ in range(N)] for i in range(1, N): nums[i] = max(nums[i - 1] * nums[i], nums[i]) print("{:.3f}".format(max(nums))) 다이나믹 프로그래밍 문제이다 현재값와 현재값에 이전 값을 곱한 값 중 더 큰값으로 교체하면 된다. 수업도 이제 얼추 끝났으니 알고리즘 다시 열심히 해야겠다 (이 쉬운문제를 풀지 못하였다.)

STUDY/Algorithm 2021.05.30

[백준] 1541 잃어버린 괄호 python

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net expression = input() num = '' number = [] op = [] for ch in expression: if ch == '+' or ch == '-': op.append(ch) number.append(int(num)) num = '' else: num += ch else: number.append(int(num)) for i in range(1, len(number..

STUDY/Algorithm 2021.05.26

[백준] 2668 숫자고르기 python

https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net import sys; input = sys.stdin.readline sys.setrecursionlimit(10**7) n = int(input()) nums = [0]+[int(input()) for _ in range(n)] visit = [False] * (n+1) finish = [False] * (n+1) result = [] def dfs(node): global resu..

STUDY/Algorithm 2021.05.20

[백준] 1992 쿼드트리 python

https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net import sys; input = sys.stdin.readline def divNConq(size, r, c): global answer if size == 1: answer += str(matrix[r][c]) return if chk_arr(size, r, c, matrix[r][c]): answer += str(matrix[r][c]) return half = size // ..

STUDY/Algorithm 2021.05.18

[백준] 14500 테트로미노 python

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net import sys; input = sys.stdin.readline def sum_arr(array): ret = 0 for i in range(N): for j in range(M): ret += array[i][j] return ret def backtrack(arr, total=0, ind=0): global max_val if ind == 3: if max_val < total: max_..

STUDY/Algorithm 2021.05.18

[백준] 1261 알고스팟 python

https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque M, N = map(int, input().rstrip().split()) matrix = [list(map(int, list(input().rstrip()))) for _ in range(N)] visit = [[M + N] * M for _ in ra..

STUDY/Algorithm 2021.05.18