본문 바로가기
반응형

Problem Solving232

[재귀 / 파이썬 ] 백준 1662번 : 압축 / 골드 5 https://www.acmicpc.net/problem/1662 1662번: 압축 압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이 www.acmicpc.net import collections s = collections.deque([x for x in input()]) def recursion(s): if len(s) == 1: return 1 temp = 0 while s: cur = s.popleft() if not s: temp += 1 break if cur.isnumeric() and s[0] != '(': temp += 1 elif c.. 2022. 3. 7.
[재귀/파이썬] 백준 4256번: 트리 / 골드 3 https://www.acmicpc.net/problem/4256 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net import sys input = sys.stdin.readline class BT(): def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def recursion(preorder, inorder): if not preorder: return None bt .. 2022. 3. 7.
[Recursion/파이썬] 백준 11729번: 하노이 탑 이동 순서 / 실버 1 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net n = int(input()) def recursion(num, cur, next): if num == 1: print(cur, next) return recursion(num-1, cur, 6-cur-next) print(cur, next) recursion(num-1, 6-cur-next, next) print(pow(2, n)-1) recursion(n, 1, 3) 지금 이 문제.. 2022. 3. 6.
[다익스트라/파이썬] 백준 9370번 : 미확인 도착지 / 골드 2 https://www.acmicpc.net/problem/9370 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net import sys import collections import heapq input = sys.stdin.readline t = int(input()) for _ in range(t): n, m, t = map(int, input().split()) # 교차로, 도로, 목적지 후보 개수 s, g, h = map(int, input().split()) # s 출발지, g -> h graph.. 2022. 3. 6.
[다익스트라] 백준 266번: 미로만들기 / 골드 4 https://www.acmicpc.net/problem/2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net import heapq n = int(input()) table = [] for _ in range(n): table.append([int(x) for x in input()]) visited = [] for _ in range(n): visited.append([False for _ in range(n)]) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] q = [] star.. 2022. 3. 5.
[다이나믹 프로그래밍 / 파이썬 ] 백준 1947번 : 선물 전달 / 골드 2 https://www.acmicpc.net/problem/1947 1947번: 선물 전달 경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다. www.acmicpc.net n = int(input()) temp = [0, 1, 2] if n < 3: print(temp[n-1]) quit() dp = [0 for _ in range(n+1)] dp[1] = 0 dp[2] = 1 dp[3] = 2 for i in range(4, n+1): dp[i] = ((dp[i-1] + dp[i-2])*(i-1)) % 1000000000 print(dp[n]) 각자 가져온 선물을 나눠 갖는데, 본인 것은 가지면 안된다. 이때 경우의 수는? 매우 간단한 질문이지만 규칙을 찾는 것은 상당히 어렵다... 2022. 3. 5.
반응형