목록전체 글 (86)
Hikenny25

소감 : 처음에는 쉬운 문제들로 구성되어 있다가 점점 자료구조와 분할정복법(이분 탐색, 매개 변수 탐색), 동적계획법 등 다양한 알고리즘을 사용해야 풀 수 있는 문제들로 구성되어 있어서, 얻어간게 많았다 근데 마인크래프트 문제 Python3으로 제출하면 시간 초과 뜨는거 때문에 ㅁㅁㅁ같았다.ㅎㅎ 어쨌든 깼다!!

https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net - Brute force import sys input = sys.stdin.readline n, m, b = map(int, input().split()) a = list() minh, maxh = 256, 0 for _ in range(n): x = list(map(int, input().split())) a.append(x) if max(x) > maxh: maxh = max(x) if m..

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

https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net - 구현 (조합론) import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) d = dict() for _ in range(n): k = input().split() try: d[k[1]] += 1 e..
https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net - Dynamic Programming import sys input = sys.stdin.readline t = int(input()) a = list() for _ in range(t): a.append(int(input())) n = max(a) dp = [1] * (n+3) for i in range(4, n+1): dp[i] = dp[i-2] + dp[i-3] for i in a: print(..
https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net - 메모이제이션 (구현) import sys input = sys.stdin.readline n, m = map(int, input().split()) nl = [0] + list(map(int, input().split())) sl = [0] * (n+1) for i in range(1, n+1): sl[i] = sl[i-1] + nl[i] for _ in range(m)..
https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net - Dynamic Programming import sys input = sys.stdin.readline n = int(input()) dp = [0] * (n+2) dp[1] = 1 dp[2] = 3 for i in range(3, n+1): dp[i] = dp[i-1] + 2 * dp[i-2] print(dp[n] % 10007) 타일링 문제 1에서 언급했던 경우의 수에, n-2 길이의 상자에 (가로 2, 세로 2) 정사..
https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net - Dynamic Programming import sys input = sys.stdin.readline n = int(input()) dp = [0] * (n+2) dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] print(dp[n] % 10007) 길이가 n인 상자를 채우는 방법은 길이가 n-1인 상자에 (세로 2, 가로 1) 블럭 하나..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net - DFS - BFS import sys input = sys.stdin.readline from collections import deque class Graph: def __init__(self, size): self.size = size self.matrix = [[0] * size for _ in range(size)] self.visited = [0]..