본문 바로가기
반응형

전체 글288

[BOJ][Python]11660번 풀이 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net import sys ssr = sys.stdin.readline n,m = map(int, ssr().split()) num = [list(map(int, ssr().split())) for _ in range(n)] dp = [[0 for _ in range(n)] for _ in range(n)] for i in range(n): dp[i][0] = .. 2022. 7. 31.
[BOJ][Python]9465번 풀이 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net import sys ssr = sys.stdin.readline t = int(ssr()) for _ in range(t): n = int(ssr()) sticker = [list(map(int, ssr().split())) for _ in range(2)] dp = [[0 for _ in range(n)] for _ in range(2)] dp[0][0], dp[1][0] = stic.. 2022. 7. 30.
[BOJ][Python]1991번 풀이 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net from string import ascii_uppercase import sys ssr = sys.stdin.readline def preorder(v): global ans if visited[v] == 1: return visited[v] = 1 ans += str(v) for i in edges: if i[0] == v: for j in range(1,3): if i[j] != .. 2022. 7. 29.
[BOJ][Python]1932번 풀이 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) t = [list(map(int, ssr().split())) for _ in range(n)] dp = [[0]*(i+1) for i in range(n)] dp[0][0] = t[0][0] for i in range(1,n): for j in range(i): dp[i][j] = max(dp[i-1][j]+t[i][j], dp[i][j]) dp[i][j+1] = dp[i-1].. 2022. 7. 28.
[BOJ][Python]17413번 풀이 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net import sys ssr = sys.stdin.readline s = ssr().rstrip() tmp = '' state = 0 idx = 0 ans = [] for i in range(len(s)): if s[i] == '': state = 0 ans.append(s[idx:i+1]) tmp = '' elif s[i] == ' ' and state != 1: .. 2022. 7. 27.
[BOJ][Python]1629번 풀이 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net def sol(a,b,c): if b == 1: return a%c elif b%2 == 0: return (sol(a,b//2,c)**2)%c else: return (sol(a,b//2,c)**2)*a%c a,b,c = map(int, input().split()) print(sol(a,b,c)) 요즘 갈수록 풀이를 안보고 못푸는 문제가 늘어나는 것 같습니다. 해당 문제는 그 성격이 조금 다르긴 합니다만 풀이를 본 건 같으니까요. 풀이를 보고도 계속 다른 방.. 2022. 7. 27.
[BOJ][Python]1149번 풀이 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) cost = [list(map(int, ssr().split())) for _ in range(n)] min_cost = [[0,0,0] for _ in range(n)] min_cost[0] = cost[0] for i in range(1,n): min_cost[i][0] = min(.. 2022. 7. 26.
[BOJ][Python]2567번 풀이 https://www.acmicpc.net/problem/2567 2567번: 색종이 - 2 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net import sys ssr = sys.stdin.readline t = [[0 for _ in range(101)] for _ in range(101)] n = int(ssr()) dx = [-1,1,0,0] dy = [0,0,-1,1] for _ in range(n): x,y = map(int, ssr().split()) ans = 0 for i in range(10): for j in range(.. 2022. 7. 26.
[BOJ][Python]16953번 풀이 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net from collections import deque a,b = map(int, input().split()) q = deque([(a,0)]) ans = -1 while q: tmp = q.popleft() if tmp[0] == b: ans = tmp[1]+1 break val1, val2 = tmp[0]*2, int(str(tmp[0])+'1') if val1 2022. 7. 25.
[BOJ][Python]15666번 풀이 https://www.acmicpc.net/problem/15666 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import sys ssr = sys.stdin.readline def sol(idx): if len(ans) == m: print(*ans) return last = 0 for i in range(idx,n): if last != num[i]: ans.append(num[i]) last = num[i] sol(i) ans.pop() n,m = map(int, ssr().split()) num.. 2022. 7. 24.
반응형