목록분류 전체보기 (112)
just inside
문제 링크https://www.acmicpc.net/problem/17219문제 설명 2019 HEPC - MAVEN League의 "비밀번호 만들기"와 같은 방식으로 비밀번호를 만든 경민이는 한 가지 문제점을 발견하였다. 비밀번호가 랜덤으로 만들어져서 기억을 못 한다는 것이었다! 그래서 경민이는 메모장에 사이트의 주소와 비밀번호를 저장해두기로 했다. 하지만 컴맹인 경민이는 메모장에서 찾기 기능을 활용하지 못하고 직접 눈으로 사이트의 주소와 비밀번호를 찾았다. 메모장에 저장된 사이트의 수가 늘어나면서 경민이는 비밀번호를 찾는 일에 시간을 너무 많이 쓰게 되었다. 이를 딱하게 여긴 문석이는 경민이를 위해 메모장에서 비밀번호를 찾는 프로그램을 만들기로 결심하였다! 문석이를 도와 경민이의 메모장에서 비밀번호를..
문제 링크https://www.acmicpc.net/problem/11047문제 설명준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 제출 코드import sysinput = sys.stdin.readlinen, k = map..
문제 링크https://www.acmicpc.net/problem/1620문제 설명오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네. 입력첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어.둘째 줄부터 N개의 줄에 포켓몬의 번호가 1..
문제 링크https://www.acmicpc.net/problem/11399문제 설명인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다.사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈..
문제 링크https://www.acmicpc.net/problem/1764문제 설명 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력 듣보잡의 수와 그 명단을 사전순으로 출력한다. 제출 코드import s..
set은 수학의 집합순서가 없고, unique한 원소를 가짐mutable 객체set 선언list나 dict는 대괄호, 중괄호로 바로 선언 가능하지만, set은 dict 타입과 동일한 중괄호를 사용하므로 바로 생성 불가능.set 생성자를 이용하거나, 중괄호에 iterable한 객체를 넣어 생성.>>> s = {}>>> type(s)>>> s = set()>>> type(s)>>> sset()>>> s = set([1,3,5,7])>>> s{1, 3, 5, 7}>>> p = {1, 3, 5, 7}>>> p{1, 3, 5, 7}중복값은 자동으로 중복 제거됨순서가 없음in : set 안에 원소 포함되어 있는지 여부 확인set.add(x) : x 원소 추가set.update([여러값]) : 여러 데이터 한번에 추..
문제 링크https://www.acmicpc.net/problem/11723문제 설명비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)all: S를 {1, 2, ..., 20} 으로 바꾼다.empty: S를 공집합으로 바꾼다. 입력첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,0..
이분 탐색 (Binary Search) 이란?정렬된 리스트에서 특정한 값을 빠르게 찾기 위한 알고리즘반으로 나누는 전략을 사용하여 검색 범위를 좁혀 나감 -> $O(log n)$ 의 시간 복잡도 가짐알고리즘 설명1. 초기화리스트의 시작 인덱스 ('left')와 끝 인덱스('right') 설정'left'는 0, 'right'는 리스트의 마지막 인덱스로 초기화2. 반복'left'가 'right'보다 작거나 같은 동안 다음을 반복중앙 인덱스 ('mid') 계산 : 'mid' = (left + right) // 2리스트의 중앙 값과 찾고자 하는 값 비교중앙 값 == 찾고자 하는 값 : 인덱스 반환중앙 값 > 찾고자 하는 값 : 'right' = 'mid' - 1중앙 값 3. 종료'left'가 'right' 보다..