목록Algorithm (160)
alpyrithm_알파이리즘

1940 주몽 www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 문제 풀기 전 공부할 것 : 정렬, 투 포인터 풀이 고유한 번호를 정렬한다. 양끝 값에서(i = 0, j = n-1) 시작해서 둘의 합이 m과 같으면 cnt에 1을 더하고 위치를 하나씩 옮긴다.(i = i + 1, j = j - 1) 양끝 값에서 시작해서 둘의 합이 m보다 작으면 왼쪽의 작은 값을 크게 만들어야 한다.(i = i + 1) 양끝 값에서 시작해서 둘의 합이 m..

2966 찍기 www.acmicpc.net/problem/2966 2966번: 찍기 상근이, 창영이, 현진이는 역사와 전통을 자랑하는 Sogang ACM-ICPC Team에 가입하려고 한다. 하지만, 가입하려고 하는 모든 지원자는 C언어 필기시험을 통과해야 한다. 이들은 C언어를 할 줄 모른다. � www.acmicpc.net 문제 풀기 전 공부할 것 : 구현, 브루트포스 알고리즘 풀이 1 규칙에 맞도록 하나씩 구현했다. A, B, G = 0, 0, 0 n = int(input()) correct = input() for i in range(n): if i % 3 == 0: if correct[i] == 'A': A += 1 elif i % 3 == 1: if correct[i] == 'B': A += ..

2608 로마 숫자 www.acmicpc.net/problem/2608 2608번: 로마 숫자 첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 구현 풀이 로마 숫자를 아라비아 숫자로 바꾸는 to_num이라는 함수를 구현했다. 합을 구한 후 하나씩 차례로 로마 숫자로 바꾸는 과정을 구현했다. nums = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} extra = {'IV':4, 'IX':9, 'XL':40, 'XC':90, 'CD':400, 'CM':900} def to_num(r): re..

9536 여우는 어떻게 울지? www.acmicpc.net/problem/9536 9536번: 여우는 어떻게 울지? 각 테스트케이스마다 여우의 울음소리를 한 줄씩, 녹음된 순서대로 출력한다. 여우의 울음소리가 녹음되어 있음이 보장된다. (알려진 것과는 달리, 여우는 모스 부호로 의사소통하지 않는다.) www.acmicpc.net 문제 풀기 전 공부할 것 : 문자열 풀이 1 테스트케이스만큼 과정을 반복한다. 여기서 잘못되면 33%에서 "틀렸습니다"가 뜬다. 녹음된 울음소리를 recode에 리스트로 입력받는다. 동물들의 울음소리만 sounds에 저장한다. goes 의 형태이므로 항상 길이가 3이다. what does the fox say?는 길이가 3보다 크므로 길이가 3보다 클 때 while문을 빠져나온다..

2693 N번째 큰 수 www.acmicpc.net/problem/2693 2693번: N번째 큰 수 첫째 줄에 테스트 케이스의 개수 T(1

7785 회사에 있는 사람 www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 � www.acmicpc.net 문제 풀기 전 공부할 것 : 자료구조, 해시를 사용한 집합과 맵 풀이 회사에 출근을 하고 나서 퇴근을 한다. 따라서 enter인 경우는 log에 value가 1로 저장을 한다. leave인 경우는 log에 value 1에서 0으로 바꾼다. log를 for문으로 돌면서 아직 퇴근하지 않은 직원을 names에 저장한다. names를 사전 순의 역..

1793 타일링 www.acmicpc.net/problem/1793 1793번: 타일링 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 숫자 0 ≤ n ≤ 250이 주어진다. www.acmicpc.net 문제 풀기 전 공부할 것 : 다이나믹 프로그래밍 풀이 n이 0, 1, 2일 때를 초기화한다. n번째 직사각형을 채우는 방법은 n-1번째 직사각형에서 2x1 타일을 더하는 방법과 n-2번째 직사각형에서 2x2 타일을 더하는 방법, 2x1 가로 2개 타일을 더하는 방법이 있다. n마다 직사각형을 채우는 방법을 출력한다. import sys input = sys.stdin.readline def solve(n): dp = [1, 1, 3] for i in ran..

11404 플로이드 www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n(1 ≤ n ≤ 100)이 주어지고 둘째 줄에는 버스의 개수 m(1 ≤ m ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 � www.acmicpc.net 문제 풀기 전 공부할 것 : 플로이드-와샬 풀이 최소 비용을 구하는 문제로 플로이드 와샬을 이용해서 해결하면 된다. 도시 a에서 도시 b로 가는 비용을 초기화한다. 그리고 3중 for문을 통해 i에서 j로 갈 때 k 도시를 거쳐서 가는 경우가 최소 비용이면 이를 업데이트한다. import sys input = sys.stdin.readline n = int(in..