문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14geLqABQCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 for _ in range(10): tc, length = map(int, input().split()) road = list(map(int, input().split())) adj = [[] for _ in range(100)] for i in range(length): adj[road[i * 2]].append(road[i * 2 + 1]) visited = [False] ..
코딩테스트
문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14tDX6AFgCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 for tc in range(1, 11): length = int(input()) exp = list(map(str, input())) postfix = [] stack = [] stack_cal = [] prior = {'*': 3, '/': 3, '+': 2, '-': 2, '(': 1} for e in exp: if e.isdigit(): postfix.append(e) ..
문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 for tc in range(1, 11): n, m = input().split() nums = list(m) stack = list() for num in nums: if stack and stack[-1] == num: stack.pop() else: stack.append(num) print("#{} {}".format(tc, ''.join(stack))) 입력받은 문자열..
문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18TrIqIwUCFAZN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 위상정렬을 활용해서 문제를 풀이했다. 위상정렬이란? - 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘 - 사이클이 없는 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것' - 기본 조건으로 위상 정렬을 수행할 수 있는 그래프는 사이클이 없는 방향 그래프이다. * 진입차수(Indegree) : 특정한 노드로 들어오는 ..
문제 링크 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 문제 문제 풀이 import sys, math input = sys.stdin.readline n = int(input()) a = list(map(int, input().split())) b, c = map(int, input().split()) result = n for i in a: i -= b if i > 0: result..
문제 링크 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 문제 풀이 def check(line): runway = [False for _ in range(n)] for i in range(n - 1): # 높이가 같을 경우 패스 if line[i] == line[i + 1]: continue # 높이차가 1보다 클 경우 그 길은 지나갈 수 없음 if abs(line[i] - line[i + 1]) > 1: return False # 높 -> 낮 if line[..
문제 링크 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 문제 풀이 from itertools import combinations n = int(input()) nums = [i for i in range(n)] result = 1e9 s = [] for _ in range(n): s.append(list(map(int, input().split()))) for start in combinations(nums, n//2): link = list(set(num..
문제 링크 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 문제 풀이 import sys n = int(sys.stdin.readline()) nums = list(map(int, sys.stdin.readline().split())) operator = list(map(int, sys.stdin.readline().split())) maximum = -1e9 minimum = 1e9..