본문 바로가기
반응형

백준224

[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.
[BOJ][Python]15663번 풀이 https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import sys ssr = sys.stdin.readline def sol(): if len(ans) == m: print(*ans) return last = 0 for i in range(n): if visited[i] == 0 and last != num[i]: visited[i] = 1 ans.append(num[i]) last = num[i] sol() ans.pop() visited.. 2022. 7. 23.
[BOJ][Python]11725번 풀이 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net from collections import deque import sys ssr = sys.stdin.readline sys.setrecursionlimit(10**7) def dfs(parent): if visited[parent] == 1: return visited[parent] = 1 for i in adjacency_list[parent]: if visited[i] == 0: ans[i] = parent dfs(i) def bfs(): tmp = so.. 2022. 7. 22.
[BOJ][Python]10994번 풀이 https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net n = int(input()) line_len = 4*(n-1)+1 cnt = 1 stars = [['*' for _ in range(line_len)] for _ in range(line_len)] while line_len - 2*cnt >= 1: for i in range(cnt, line_len-cnt): for j in range(cnt, line_len-cnt): if cnt%2 == 1: stars[i][j] = ' ' else: stars[i][j] = '*' cnt += 1 for i in stars: prin.. 2022. 7. 21.
[BOJ][Python]11053번 풀이 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net n = int(input()) a = list(map(int, input().split())) dp = [1 for _ in range(n)] for i in range(n): for j in range(i+1,n): if a[j] > a[i]: dp[j] = max(dp[j], dp[i]+1) print(max(dp).. 2022. 7. 21.
반응형