파이썬 144

[백준] 1920 수찾기 python

www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) N_list = list(map(int, input().split())) N_list.sort() M = int(input()) M_list = list(map(int, input().split())) # M_list의 원소가 N_list에 존재하는지 알아내는 문제 ..

STUDY/Algorithm 2021.04.28

[백준] 1874 스택수열 python

www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net n = int(input()) numbers = [int(input()) for _ in range(n)] stack = [] result_list = [] num = 1 result = 0 while num n: if stack[-1] == numbers[result]: result += 1 stack.pop() result_l..

STUDY/Algorithm 2021.04.28

[백준] 1654 랜선자르기 python

www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net K, N = map(int, input().split()) N_list = [int(input()) for _ in range(K)] result = 0 s, e = 1, max(N_list) while s m의 값이 큰경우 => m을 줄이는 방향 e = m - 1 else: s = m + 1 result = max(result, m) # 랜선의 최대 길이를 찾아야 하므로 print..

STUDY/Algorithm 2021.04.28

[백준] 1504 특정한 최단 경로 python

www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net import sys input = sys.stdin.readline from heapq import heappop, heappush N, E = map(int, input().split()) link_arr = [list() for _ in range(N + 1)] for _ in range(E): n1, n2, w = map(int, input().split()) ..

STUDY/Algorithm 2021.04.27

[백준] 1707 이분 그래프 python

www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net import sys input = sys.stdin.readline from collections import deque K = int(input()) for tc in range(K): V, E = map(int, input().split()) # 인접 리스트 link_arr = [list() for _ in range(V + 1)] for _ in range(E): n1, n2 = map(int..

STUDY/Algorithm 2021.04.27

[백준] 2178 미로 탐색, python, C

www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) matrix = [input() for _ in range(N)] visit = [[0] * M for _ in range(N)] def bfs(r, c): q = deque() q.append((r, c)) visit[r][c] = 1 delta = [(-1, 0..

STUDY/Algorithm 2021.04.27

[백준] 2156 포도주 시식, python

www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net n = int(input()) wine = [0] + [int(input()) for _ in range(n)] dp = [0] * (n + 1) # 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. # 최대 두잔 연속 dp[1] = wine[1] if n >= 2: dp[2] = max(wine[1]+wine[2], dp[0] + wine[2]) for i in range(3, n + 1): dp[i] = ma..

STUDY/Algorithm 2021.04.26

[백준] 11053 가장 긴 증가하는 부분 수열 python

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()) arr = [0] + list(map(int, input().split())) dp = [0] * (n + 1) for i in range(1, n + 1): max_val = 0 for j in range(i): if arr[j] < arr[i] and max_val < dp[j]: max_val = ..

STUDY/Algorithm 2021.04.26

[백준] 1753 최단경로 python

www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net import sys from heapq import heappop, heappush input = sys.stdin.readline N, E = map(int, input().split()) K = int(input()) link = [list() for _ in range(N + 1)] for _ in range(E): n1, n2, w = map(int, input().split(..

STUDY/Algorithm 2021.04.22

[프로그래머스] 모두 0으로 만들기, 월간 코드 챌린지, python

programmers.co.kr/learn/courses/30/lessons/76503 코딩테스트 연습 - 모두 0으로 만들기 각 점에 가중치가 부여된 트리가 주어집니다. 당신은 다음 연산을 통하여, 이 트리의 모든 점들의 가중치를 0으로 만들고자 합니다. 임의의 연결된 두 점을 골라서 한쪽은 1 증가시키고, 다른 한 programmers.co.kr 대회 당일에는 트리로 만들면 될거같긴한데 그이후에 어떻게 접근해야할지 몰랐다. if sum(a): return -1 만 해놓고 그이후엔 트리로 풀면되지 않을까하고 뚱땅뚱땅하긴했지만 33점인가 나왔다. a = [0,-5,2,1,2] edges = [[0,1],[3,4],[2,3],[0,3]] def solution(a, edges): # sum이 0이 아니면 ..

STUDY/Algorithm 2021.04.18