분류 전체보기

문제링크 https://www.acmicpc.net/problem/2511 2511번: 카드놀이 첫 번째 줄에는 게임이 끝난 후, A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력한다. 두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서, 이긴 사람을 문자 A 또는 B로 출력한다. 만약 www.acmicpc.net 문제 코드 코드설명 A 와 B에 각각 변수값을 넣어주고 카드의 숫자가 큰 사람의 이름을 LastWinner라는 변수에 저장하였다. 이후 반복문을 사용하여 카드를 한장씩 비교하였다. 숫자가 더 큰 사람에게 승점 3점을, 비기면 모두에게 1점을 주는 코드를 작성하였다. 게임이 끝난 후 A,B의 점수가 같다면 LastWinner를 출력한다. LastWinner가 빈다면 모든 라운드가 비긴..
https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 다이나믹 프로그래밍 문제이며, 이 유형의 문제를 해결하기 위해선 점화식을 잘 세워야 한다. 이 문제에서는 항상 세로의 길이가 2로 고정되어 있으므로, 가로의 길이가 1씩 늘어남에 따른 경우의 수의 증가에 주목하면 된다. 각 경우마다 가능한 타일링의 수를 직접 구하다 보니 규칙이 보였다. dp[2]=2, dp[3]=3, dp[4]=5, dp[5]=8... 블록은 가로로만 증가하기 때문에 n개의 타일링은 n보다 작은 부분..
https://www.acmicpc.net/problem/15624 15624번: 피보나치 수 7 첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. www.acmicpc.net 1. 문제풀이 피보나치 수열은 다음과 같이 수식으로 표현하면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일 때까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 주어진 문제에서 n의 범위는 0 ≤ n ≤ 1,000,000이다. n의 범위가 크므로, n번째 피보나치 수를 구하기 위하여 재귀함수가 아닌 다이나믹 프로그래밍으로 접근하였다. n번째 피보나치 수를 1,00..
문제 https://www.acmicpc.net/problem/14430 14430번: 자원 캐기 인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다. www.acmicpc.net 풀이 다이나믹 프로그래밍으로 풀이 편하게 작성하기 위해 N+1행 M+1열인 0으로 이루어진 2차원 리스트 생성한다. 이중 반복문을 통해 1,1부터 N,M까지 dp에 값(해당 위치까지의 최댓값)을 넣어준다. (NXM을 입력받았으므로 [i-1][j-1]에 해당하는 값에 dp로 구한 위쪽[i-1][j]과 왼쪽[i][j-1] 중 큰 값을 더한다.) 최댓값인 오른쪽 아래의 값을 ..
문제 https://www.acmicpc.net/problem/11068 11068번: 회문인 수 어떤 수를 왼쪽부터 읽어도, 오른쪽부터 읽어도 같을 때 이 수를 회문인 수라고 한다. 예를 들어, 747은 회문인 수이다. 255도 회문인 수인데, 16진수로 표현하면 FF이기 때문이다. 양의 정수를 입력 www.acmicpc.net 알고리즘 분류 수학 브루트포스 알고리즘 문제 어떤 수를 왼쪽부터 읽어도, 오른쪽부터 읽어도 같을 때 이 수를 회문인 수라고 한다. 예를 들어, 747은 회문인 수이다. 255도 회문인 수인데, 16진수로 표현하면 FF이기 때문이다. 양의 정수를 입력받았을 때, 이 수가 어떤 B진법 (2 ≤ B ≤ 64)으로 표현하면 회문이 되는 경우가 있는지 알려주는 프로그램을 작성하시오. B..
문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 알고리즘 분류 자료 구조 문자열 정렬 해시를 사용한 집합과 맵 문제 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오..
문제 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..
KauKoala
'분류 전체보기' 카테고리의 글 목록 (67 Page)