알고리즘

문제 (링크) https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 나의 풀이 h, w = map(int, input().split()) world = list(map(int, input().split())) ans = 0 for i in range(1, w - 1): left_max = max(world[:i]) right_max = max(world[i+1:]) compare = min(left_max, right_max) if..
문제 (링크) https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n, m, x, y, k = map(int, input().split()) graph = [] # 동: 1 서: 2 북: 3 남: 4 moves = [ [], [0, 1], [0, -1], [-1, 0], [1, 0] ] # 아래부터 0, ..
문제 (링크) https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline # 스티커 90도 회전 def rotate_by_90(sticker_board): r, c = len(sticker_board), len(sticker_board[0]) rotated_sticker_board = [[0] * r for _ in range(c)] for i in range(c): for j ..
문제 (링크) https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 나의 풀이 # 오답 import sys input = sys.stdin.readline words = [] word_dict = {} n = int(input()) for _ in range(n): words.append(list(str(input().rstrip()))) words = sorted(words, key=lambda x:len(x), reverse=True) lo..
시간 제한 1초 문제 (링크) https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y(-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n = int(input()) lines = [] for _ in range(n): lines.append(tuple(map(int, input().split()))) lines.sort() left = lines[0][0] right = lines[0][1] ..
문제 (링크) https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) n, m = map(int, input().split()) graph = [] moves = [ [1, 0], [0, 1], [-1, 0], [0, -1] ] visited = [[-1] * m for _ in range(n)] for _ in rang..
시간 제한 0.5 초 (추가 시간 없음) 문제 (링크) https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 나의 풀이 n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) dp = [0] * (k+1) dp[0] = 1 # dp[i] -> i원을 만들 때 가능한 경우의 수 # dp[0] -> 동전 하나를 사용하는 경우 (coin이 3일 때, d..
문제 (링크) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 나의 풀이 import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) graph = [] for _ in range(n): row = list(str(input().rstrip())) graph.append(list(map(int, row..
SeongOnion
'알고리즘' 태그의 글 목록 (2 Page)