본문 바로가기
반응형

전체 글252

[백준][Python] 4358번 생태학 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 코드 import sys total = 0 dic = dict() while 1: word = sys.stdin.readline().rstrip() if word == '': break total += 1 if word in dic: # 전에 이미 나왔으면 dic[word] += 1 else: dic[word] = 1 sdic = dict(sorted(dic.items())) for i in sdic: a = sdic[i] per = (a / tota.. 2022. 2. 21.
[백준][Python] 11286번 절댓값 힙 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 코드 import sys import heapq n = int(input()) heap = [] for i in range(n): x = int(sys.stdin.readline()) if x == 0: if heap: print(heapq.heappop(heap)[1]) else: print(0) else: heapq.heappush(heap,(abs(x),x)) 설명 heap에 push를 할 때 (절댓값, 원래값)을 같이 넣어줘서 만약 절.. 2022. 2. 19.
[백준][Python] 14425번 문자열 집합 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 코드 import sys N, M = map(int, input().split()) arr = dict() cnt = 0 for _ in range(N): s = sys.stdin.readline() arr[s] = True for _ in range(M): inp = sys.stdin.readline() if inp in arr.keys(): cnt+=1 print(cnt) 설명 딕셔너리를 사용하여 구현했다. 파이썬 딕셔너리는 해.. 2022. 2. 18.
[백준][Python] 11279번 최대 힙 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 코드 import sys import heapq n = int(input()) heap = [] for i in range(n): a = int(sys.stdin.readline()) if a == 0: if heap: print((-1)*heapq.heappop(heap)) else: print(0) else: heapq.heappush(heap,(-1)*a) 설명 heapq 모듈을 사용했다. heappop() 함수, heappush() 함수.. 2022. 2. 17.
[백준][Python] 1918번 후위 표기식 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 코드 inp = input() stack = [] answer = [] for i in inp: if i == '(': stack.append(i) elif i == ')': while stack and stack[-1] != '(': answer.append(stack.pop()) if stack[-1] == '(': stack.pop() elif i == '+' or i == '-': while stack and stack[-1] != '(': answe.. 2022. 2. 17.
[백준][Python] 5430번 AC 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 코드 import sys from collections import deque T = int(input()) for i in range(T): err = 0 rev = 0 p = list(sys.stdin.readline().strip()) n = int(sys.stdin.readline()) arr = deque(sys.stdin.readline().strip()[1:-1].split(',')) for j in p: if j == 'R': if rev == 0: rev = 1 elif rev == 1: rev = 0.. 2022. 2. 16.
[백준][Python] 18115번 카드 놓기 18115번: 카드 놓기 수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다. 제일 위의 카드 1장을 바닥에 내려놓는다. www.acmicpc.net 코드 from collections import deque n = int(input()) inp = list(map(int, input().split())) dq = deque([]) inp.reverse() for i in range(n): if inp[i] == 1: dq.appendleft(i+1) elif inp[i] == 2: a = dq.popleft() dq.appendleft(i+1) dq.appendleft(a) elif inp[i] == 3: d.. 2022. 2. 16.
[백준][Python] 5397번 키로거 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 코드 from collections import deque import sys n = int(input()) for i in range(n): left = deque([]) right = deque([]) index = 0 inp = list(sys.stdin.readline().rstrip()) for j in inp: if j == '': if len(right)>0: left.append(right.popleft()) elif j == '-': if.. 2022. 2. 15.
[백준][Python] 1021번 회전하는 큐 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 코드 from collections import deque N, M = map(int,(input().split())) number = list(map(int,input().split())) dq = deque([i for i in range(1,N+1)]) cnt = 0 for i in number: while 1: if dq[0] == i: dq.popleft() break else: if dq.index(i) < (len(dq) / 2): # 어느쪽으로.. 2022. 2. 15.
반응형