목록Python (9)
It's easy, if you try
문제링크: https://www.acmicpc.net/problem/1766 풀이 import sys input = sys.stdin.readline import heapq n, m = map(int, input().split()) tree = [[] for _ in range(n+1)] inDegree = [0 for _ in range(n+1)] for _ in range(m): a, b = map(int, input().split()) tree[a].append(b) inDegree[b] += 1 q = [] for i in range(1,n+1): if inDegree[i] == 0: # 차수가 0 인 문제를 최소 힙에 push heapq.heappush(q, i) result = [] while..
문제 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요. 제한사항 입국심사를 기..
title: "[알고리즘] 백준알고리즘 - 9252 LCS2 (파이썬/python)" date: 2020-05-17 18:30:00 tags: 알고리즘 문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를, 둘째 줄에 LCS를 출력한다. LCS가 여러 가지인 경우에는 아무거나 출력하고, LCS의 길이가 0인 경우에는 둘째 줄..
문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 예제 입력 1 ACAYKP CAPCAK 예제 출력 1 4 출처 문제를 만든 사람: baekjoon 데이터를 추가한 사람: qpwoeiruty 알고리즘 분류 [다이나믹 프로그래밍](https://www.acmicpc.net/problem/tag/다이나믹 프로그래밍..
풀이 T = int(input()) # 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다. days = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31} for test_case in range(1, T + 1): case = str(input()) year = case[0:4] month = case[4:6] day = case[6:8] answer = '' if 0 '1') 로 바꾼 후 출력하면 안된다. 만약 하나라도 조건을 만족하지 못하면 '#[test_case] -1'을 출력한다. 최초 발행 날짜: 20..

heapq 모듈에 대해 간략히 알아보자 ! Heap 이란 ? 힙(heap)은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(complete binary tree)를 기본으로 한 자료구조(tree-based structure)로서 다음과 같은 힙 속성(property)을 만족한다. A가 B의 부모노드(parent node)이면, A의 키(key)값과 B의 키값 사이에는 대소관계가 성립한다. 힙에는 두가지 종류가 있으며, 부모노드의 키값이 자식노드의 키값보다 항상 큰 힙을 '최대 힙', 부모노드의 키값이 자식노드의 키값보다 항상 작은 힙을 '최소 힙'이라고 부른다. 아래 사진은 최대 힙의 예시이다. 출처 : 위키백과 '힙 (자료 구조)' heapq 완전 이진트리 기반의 최소 힙 자..
언더스코어(_) 크게 다섯가지의 상황에서 사용된다. 인터프리터(Interpreter)에서 마지막 값을 저장할 때 값을 무시하고 싶을 때 (흔히 “I don’t care”라고 부른다.) 변수나 함수명에 특별한 의미 또는 기능을 부여하고자 할 때 국제화(Internationalization, i18n)/지역화(Localization, l10n) 함수로써 사용할 때 숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용할 때 여기서 for _ in range(n) 은 2번째 경우인 값을 무시하고 싶을 때 쓰인 경우이다. 인덱스가 필요하지 않을 때 간단히 쓰인다. 최초 발행 날짜: 2020-03-23 21:57:00
문제 서랍의 비밀번호가 생각이 나지 않는다. 비밀번호 P는 000부터 999까지 번호 중의 하나이다. 주어지는 번호 K부터 1씩 증가하며 비밀번호를 확인해 볼 생각이다. 예를 들어 비밀번호 P가 123 이고 주어지는 번호 K가 100 일 때, 100부터 123까지 24번 확인하여 비밀번호를 맞출 수 있다. P와 K가 주어지면 K부터 시작하여 몇 번 만에 P를 맞출 수 있는지 알아보자. [입력] 입력으로 P와 K가 빈 칸을 사이로 주어진다. [출력] 몇 번 만에 비밀번호를 맞출 수 있는지 출력한다. 입력 예시 123 100 출력 예시 24 풀이 SW Expert Academy 모의 테스트 방식에 익숙해지려고 풀어봤다. 풀이 1 P, K = map(int, input().split()) print(P - K..
문제 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다...