목록Algorithm/백준 알고리즘_Python (125)
alpyrithm_알파이리즘
2607 비슷한 단어 www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이�� www.acmicpc.net 문제 풀기 전 공부할 것 : 구현, 브루트포스 알고리즘 풀이 1 첫 번째 단어를 dictionary 형태로 word에 저장한다. 단어들을 반복하여 단어의 알파벳을 word에서 -1 한다. 한 문자를 더하거나 빼거나 다른 문자로 바꾸는 경우에만 res에 +1을 한다. import copy import sys input = sys.stdin.readline n = int(input()) ..
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..