문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 알고리즘 분류 자료 구조 문자열 정렬 해시를 사용한 집합과 맵 문제 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오..
Koala - 11기
문제 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 알고리즘 분류 구현 자료 구조 스택 문제 설명 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이..
문제링크 https://www.acmicpc.net/problem/2240 2240번: 자두나무 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어 www.acmicpc.net 코드 t,w = map(int,input().split()) data = [0] + [int(input()) for _ in range(t)] dp = [[0 for _ in range(w+1)] for _ in range(t+1)] for i in range(1,t+1): if data[i]==1: dp[i][0] = dp[i-1][0]+1 else:dp[i][0] = dp[i-1][0] for..
문제링크 https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 코드 from bisect import bisect_left def lis(arr): if not arr:return 0 dp = [arr[0]] for i in range(len(arr)): if dp[-1]
문제 https://www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M> N >> M >> J; int move = 0; boxPosLeft = 1, boxPosRight = M; vector apple(J, false); for (int i = 0; i > applePos; apple[applePos - 1] = true; while (apple[applePos - 1]) { if (boxPosLeft
문제 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 문제 설명 사이트 주소와 해당 사이트의 계정 비밀번호를 입력한다. 찾고자 하는 비밀번호를 등록한 사이트 주소를 입력하면 비밀번호가 출력되게끔 만들면 된다. 코드 #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); map st..
코드 # 복습 횟수:0, 01:00:00, 복습필요:*** from collections import deque def solution(picks, minerals): answer = 0 mineral_list = [] tool_num = sum(picks) minerals = minerals[:5*tool_num] tmp = [] for idx, mineral in enumerate(minerals): tmp.append(mineral) if idx % 5 == 4: mineral_list.append(tmp) tmp = [] else: pass if len(tmp) != 0: mineral_list.append(tmp) indexed_list = [] for mineral in mineral_list..
Problem Solution 먼저 수열 A의 크기를 입력 받고 for문을 활용해 수열 A의 원소들을 입력 받는다 dp 배열을 모두 1로 초기화한다. 0부터 i-1까지 순회하면서 arr[i] 보다 작은 원소들을 찾고, 작은 원소 arr[j]를 찾으면 dp[i]와 dp[j]+1 중 큰 값을 dp[i]에 저장한다. 마지막으로 dp배열 중 가장 큰 값을 찾아 result에 저장한 후 출력한다. Answer #include #include using namespace std; int arr[1001]; int dp[1001]; int main() { int n; cin >> n; for (int i = 0; i > arr[i]; } for (int i = 0; i < n; i++)..
문제 https://www.acmicpc.net/problem/25214 25214번: 크림 파스타 각 \(A_i\)가 추가된 직후의 문제의 답 \(N\)개를 공백으로 구분하여 출력한다. www.acmicpc.net Algorithm 1 ≤ i ≤ j ≤ len(A)을 만족하는 A[j] - A[i]의 최댓값을 구하는 문제이다. dp배열을 만들어주고, 각 배열의 첫번째 원소는 i-1까지의 최댓값과 A[i] 와 dp[i-1]까지의 최솟값의 차이중 최댓값을 취한다.각 배열의 두번째 원소는 dp[i-1] 과 A[i]의 최솟값을 취해주고 dp배열을 점점 확장해나가면 된다. 최종 출력은 첫번째원소를 출력해주면 된다. Code input = __import__('sys').stdin.readline n = int(i..
1463번: 1로 만들기 (acmicpc.net) 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 설명: 세 가지 연산을 적절히 사용해서 1을 만드는 문제. 최소한의 연산을 원함. 문제 코드: x=int(input()) dic={1:0,2:1,3:1} def fib(x): if x in list(dic.keys()): return dic[x] if x%6==0: dic[x]=min(fib(x//3),fib(x//2))+1 elif x%3==0: dic[x]=min(fib(x//3),fib(x-1))+1 elif x%2==0: dic[x]=min(fib(x//2),fib(x-1))+1 else: dic[x]=fib(x-..
문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 코드 n=int(input()) sums=0 d=[] for i in range(n): d.append(list(map(int,input().split()))) for i in range(1,n): d[i][0]=min(d[i-1][1],d[i-1][2])+d[i][0] d[i][1]=min(d[i-1][0],d[i-1][2])+d[i][1] d[i][2]=min(d[i..
문제 https://www.acmicpc.net/problem/1362 1362번: 펫 당신은 게임으로 펫을 기르고 있습니다. 이 펫은 웃는 표정, 슬픈 표정을 가지고 있으며, 만약 죽는다면 '드러눕습니다.' 펫에게는 적정 체중이 있습니다. 펫의 실제 체중이 적정 체중의 1/2배를 www.acmicpc.net 문제 설명 각 시나리오마다 적정 체중과 실제 체중을 입력받는다. 명령에 따라 실제 체중을 변화시키고, 시나리오가 종료되면 조건에 따라 펫의 상태를 출력한다. 코드 import sys input = __import__('sys').stdin.readline def main(): idx = 1 # 시나리오 횟수 while True: L, R = map(int, input().rstrip().split(..