#문제링크 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net #나의풀이 import sys answer = [] visited = [0] * 10 N = 0 def check(num1, num2, op): if op == '>': if int(num1) > int(num2): return True if op == '
#문제링크 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net #나의풀이 import sys import heapq def dijkstra(start): dp[start] = 0 heap = [] heapq.heappush(heap, [0, start]) while heap: w, cur = heapq.heappop(heap) if dp[cur] < w: continue for dest, weight in grap..
#문제링크 https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net #나의풀이 import sys if __name__=="__main__": A = sys.stdin.readline().strip() B = sys.stdin.readline().strip() dp = [0] * len(B) for i in range(len(A)): cnt = 0 for j in range(len(B)): if cnt < d..
#문제링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net #나의풀이 import sys if __name__=="__main__": N = int(sys.stdin.readline()) board = [] dp = [[0]* 3 for _ in range(N)] for _ in range(N): board.append(list(map(int, sys.stdin.readline().split()))) dp[0] = boar..
#문제링크 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net #나의풀이 import sys if __name__=="__main__": N, M = map(int, sys.stdin.readline().split()) knowPeople = set(sys.stdin.readline().split()[1:]) parties = [] answer = 0 for _ in range(M): tmp = list(sys.stdin.readline().split()[1..
#문제링크 https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr #나의풀이 def solution(s): answer = 0 _str = s for i in range(len(s)): stack = [] for char in _str: if len(stack) == 0: stack.append(char) else: if char == '{' or char == '[' or char == '(': stack.append(char) elif char == '}': if stack[-1] == '{': stack.pop() else: break elif char == ']': if stack[-1..