[Python] 알고리즘
-
[9996] 한국이 그리울 땐 서버에 접속하지 (Python)[Python] 알고리즘/Silver 2021. 11. 4. 17:16
[문제] https://www.acmicpc.net/problem/9996 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net 알고리즘 분류는 문자열, 브루트포스 알고리즘, 정규 표현식 입니다. [파일의 시작]*[파일의 끝]으로 이루어져 있고, '*'를 기준으로 나눠줍니다. 1 abcd*cdef abcdef 이 예제의 경우, abcd와 cdef가 겹치므로 NE를 출력해야 합니다. [코드] import sys N = int(sys.stdin.readline()) pt = sys.s..
-
[1900] 레슬러 (Python)[Python] 알고리즘/Silver 2021. 11. 3. 21:01
[문제] https://www.acmicpc.net/problem/1900 1900번: 레슬러 첫째 줄에 선수들의 수 N이 주어진다. 선수들은 1부터 N까지 번호가 붙어 있다. 다음 N개의 줄에는 한 줄에 한 선수의 힘과 그가 가진 마술 링의 힘이 주어진다. 선수 k의 정보는 k+1번째 줄에 주어 www.acmicpc.net 알고리즘 분류는 정렬 입니다. 이긴 횟수를 저장하고, 많이 이긴 순으로 정렬합니다. [코드] import sys N = int(sys.stdin.readline()) player = list() win = dict() for i in range(N): player.append(list(map(int, sys.stdin.readline().split()))) win[i] = 0 for..
-
[5648] 역원소 정렬 (Python)[Python] 알고리즘/Silver 2021. 11. 2. 21:44
[문제] https://www.acmicpc.net/problem/5648 5648번: 역원소 정렬 모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요. 단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니 www.acmicpc.net 알고리즘 분류는 구현, 정렬 입니다. 입력의 끝은 EOF(End Of File) 입니다. [코드] import sys li = list() cnt = 0 while 1: try: ins = input() if ins == -1: break else: i_sp = ins.split() for i in i_sp: if cnt != 0: i = "".join(reversed(i)).lstrip("..
-
[1935] 후위 표기식2 (Python)[Python] 알고리즘/Silver 2021. 11. 1. 17:29
[문제] https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 알고리즘 분류는 자료 구조, 스택 입니다. 후위 표기식 입력을 받을 때, A~Z 영대문자를 받기 때문에 ASCII 코드를 이용하여 해당 자리의 값을 찾아야 합니다. (li[A - A] = li[0] / li[B - A] = li[1]) [코드] import sys N = int(sys.stdin.readline()) post = list(sys.stdin.readline().r..
-
[11478] 서로 다른 부분 문자열의 개수 (Python)[Python] 알고리즘/Silver 2021. 10. 31. 16:24
[문제] https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 알고리즘 분류는 자료구조, 문자열, 트리/해시를 사용한 집합과 맵 입니다. 서로 다른 부분 문자열을 구해야 하므로, set()을 이용하여 중복을 제거합니다. 길이 1, 2, 3, ... 을 구하기 위해서, 이중 for문을 사용합니다. 이해를 돕기 위한 영상 [코드] import sys S = list(sys.stdin.readline().rstrip()) res = set() for j in range(1, len(S) + 1): for i in range..
-
[10815] 숫자 카드 (Python)[Python] 알고리즘/Silver 2021. 10. 29. 16:50
[문제] https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 알고리즘 분류는 정렬, 이분 탐색 입니다. 2번째 줄에 입력받은 카드를 정렬하고, 4번째 줄에 입력받은 카드를 이분 탐색으로 찾아야 합니다. [코드] import sys def binary(data, find): left = 0 right = len(data) - 1 while left find: right = mid - 1 return "0" N = int..
-
[9536] 여우는 어떻게 울지? (Python)[Python] 알고리즘/Silver 2021. 10. 28. 17:06
[문제] https://www.acmicpc.net/problem/9536 9536번: 여우는 어떻게 울지? 각 테스트케이스마다 여우의 울음소리를 한 줄씩, 녹음된 순서대로 출력한다. 여우의 울음소리가 녹음되어 있음이 보장된다. (알려진 것과는 달리, 여우는 모스 부호로 의사소통하지 않는다.) www.acmicpc.net 알고리즘 분류는 문자열, 파싱 입니다. set()을 이용하면, 섞여있는 울음소리 - 여우를 제외한 울음소리 = 여우의 울음소리를 얻을 수 있습니다. set()은 중복된 것을 없애므로 완벽한 여우의 울음소리는 아닙니다. [코드] import sys T = int(sys.stdin.readline()) for i in range(T): sound = sys.stdin.readline().s..
-
[9414] 프로그래밍 대회 전용 부지 (Python)[Python] 알고리즘/Silver 2021. 10. 27. 13:48
[문제] https://www.acmicpc.net/problem/9414 9414번: 프로그래밍 대회 전용 부지 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 땅값 Li가 한 줄에 하나씩 주어지며, 0은 테스트 케이스의 마지막을 나타낸다. 각 테스트 케이스마다 상근이가 구 www.acmicpc.net 알고리즘 분류는 수학, 정렬, 사칙연산 입니다. 땅값은 매년 오르므로, 땅을 최소의 가격으로 구매하기 위해선 비싼 땅을 먼저 구매해야 합니다. 돈이 부족한 경우도 조건을 걸어주어야 합니다. [코드] import sys T = int(sys.stdin.readline()) for i in range(T): li = list() res = 0 money = 5 * ..