프로그래밍 198

백준 16120 PPAP 파이썬

www.acmicpc.net/problem/16120 16120번: PPAP 첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다. www.acmicpc.net word = input() if word == 'P' or word == 'PPAP': print('PPAP') else: stack = [] ppap = ['P','P','A','P'] for i in word: stack.append(i) if stack[-4:] == ppap: stack.pop() stack.pop() stack.pop() if stack == ppap or stack == ['P']: print('PPAP') else: print('NP..

백준 11509 풍선 맞추기 파이썬

www.acmicpc.net/problem/11509 11509번: 풍선 맞추기 첫 번째 예제 에서 [5,4,3] 을 터트리고 [2,1]을 터트리면 모든 풍선을 터트릴 수 있으므로 최소한 2개의 화살을 필요로 한다. www.acmicpc.net 약간 애를 먹었다. 구현 핵심 아이디어를 초반에 생각했다가 다른 방법으로 풀었는데 시간초과가 발생했다. 구현 방식을 O(N) 으로 변경해서 다시 구현했는데 이번엔 실수로 한참 헤맸다. N = int(input()) ballons = list(map(int, input().split())) flag = [0] * 1000001 ans = 0 for i in range(len(ballons)): if flag[ballons[i]] == 0: ans+=1 flag[ba..

백준 13417 카드 문자열 파이썬

www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net T = int(input()) for _ in range(T): N = int(input()) A = list(map(str, input().split())) ans = [A[0]] for i in range(1, len(A)): left = ans[0] right = ans[-1] if A[i]

백준 1105 팔 파이썬

www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net L, R = map(int, input().split()) ans = 0 if len(str(L)) != len(str(R)): print(0) else: L_str = str(L) R_str = str(R) if L_str[0] != R_str[0]: print(0) else: if L_str[0] == '8': ans+=1 for i in range(1, len(L_str)): if L_str[i] != R_str[i]: break el..

백준 4889 안정적인 문자열

www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net cnt = 0 while True: ans = 0 A = [] s = input() if s.startswith('-'): break for i in s: if i == '{': A.append(i) else: if A: A.pop() else: A.append('{') ans+=1 ans+= len(A) // 2 if len(A) > 1 else len(A) cnt+=1 print(f'{cnt}. {ans..

백준 12904 A와 B

www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net S, T = [list(input()) for _ in range(2)] temp = T for i in range(len(T) - 1, -1, -1): if i + 1 == len(S): break if temp[i] == 'A': temp = temp[:i] else: temp = temp[:i] temp = temp[::-1] if temp == S: print(1) ..

백준 1461 도서관 파이썬

www.acmicpc.net/problem/1461 1461번: 도서관 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N은 10,000보다 작거나 같은 자연수이고, M은 10,000보다 작거나 같다. 책의 위치 www.acmicpc.net def right_move(A, zero_index, M): right_len = len(A) - (zero_index + 1) left_len = zero_index ans = 0 remain_right = right_len % M if remain_right != 0: ans+=A[zero_index+remain_right] * 2 for i in range(zero_index+remain_..

백준 1781 컵라면 파이썬

www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net import heapq import sys if __name__ == '__main__': heap = [] N = int(sys.stdin.readline().rstrip()) for _ in range(N): deadline, ramen = map(int, sys.stdin.readline().split()) heapq.heappush(heap, [-ramen, deadline]) ans = 0 flag = [0] ..

백준 1202 보석도둑 파이썬

www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net import heapq N, K = map(int, input().split()) gem = [] for i in range(N): weight, value = map(int, input().split()) heapq.heappush(gem, [weight, value]) bag = [] for i in range(K): heapq.heappush(b..