목록Python (108)
REC
문제 설명https://www.acmicpc.net/problem/2075정답 코드import heapqN = int(input())heap = []for _ in range(N): for i in list(map(int, input().split())): if len(heap) == N and i > heap[0]: heapq.heappush(heap, i) heapq.heappop(heap) elif len(heap)

오늘의 문제https://www.acmicpc.net/problem/5525 내 풀이난 솔직히 어려웠다. 맞힌 코드만 보면 너무 쉬운데, 이 방법을 생각해내는 것이 어려웠다.처음에는 N값에 맞는 Pn을 만들고, S를 순회하면서 Pn이랑 S를 '한 글자씩' 비교하여 어쩌구... 하는 방식으로 접근했다가 이렇게 계~속 안 풀려서 접근이 틀렸다고 생각하고 서치를 해봤다. N = int(input())M = int(input())S = input()P1 = "IOI" # 기본단위 P1 생성continuous_cnt = 0 # P1이 반복되는 횟수를 저장하는 변수i = 0 # S를 슬라이싱 할 시작 인덱스answer = 0# i+3이 M이 될 때까지 (즉, 최대 M-1까지 슬라이싱 가능)while i 풀이 참고한..
오늘의 문제https://www.acmicpc.net/problem/11723 내 풀이# 빠른 입력import sysdef input(): return sys.stdin.readline().rstrip()# 집합 S 생성S = set()M = int(input())# M만큼 반복for _ in range(M): operation = input().split() command = operation[0] if len(operation) > 1: # operation 길이가 2 이상일 때 (command가 all일 때를 대비) value = int(operation[1]) # 값을 int로 변환하여 value에 저장 if command == "add": # add 명령일 때 ..
오늘의 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 풀이def solution(s): answer = False # 초기값 설정 stack = []# stack 리스트 생성 for i in range(len(s)): # 문자열 s의 길이만큼 반복 if not stack: # stack이 비어 있을 때 if s[i] == ")": # 인덱스 i가 ")"면 -> 짝을 이루는 "("가 앞에 없는데 ")"가 나온다는 뜻이니까 return answer # 올바르지 않은 괄호 else: # 인덱스 i가 "("..
오늘의 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 풀이def solution(prices): answer = [] for i in range(len(prices)): # prices 개수만큼 반복 cnt = 0 # 카운트 초기화 for j in range(i + 1, len(prices)): # 현재 포커싱 하고 있는 값(인덱스 i)의 뒤에 있는 값부터 끝까지 반복 cnt += 1 # 카운트 증가 if prices[i] > prices[j]: # 인덱스 i 값(더 앞에 있는 값)이 인덱스 j(더 뒤에 있는 값)보다 ..
오늘의 문제https://www.acmicpc.net/problem/1406 내 풀이# 빠른 입력 (이거 쓰니까 시간초과 해결됨)import sysdef input(): return sys.stdin.readline().rstrip()S = input()M = int(input())# 커서의 왼쪽 문자열을 뜻하는 left_stackleft_stack = list(S) # 각 문자를 리스트의 요소로 저장# 커서의 오른쪽 문자열을 뜻하는 right_stackright_stack = []# M만큼 반복for _ in range(0, M): command = input().split() # P x 와 같은 형태를 처리하기 위해 if command[0] == "L" and left_stack: # L ..
오늘의 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 풀이def solution(progresses, speeds): answer = [] cnt = 0 while progresses: # 빈 배열이 아니라면 반복 while progresses and progresses[0] >= 100: # 빈 배열이 아니고 첫 번째 값이 100 이상일 때 progresses.pop(0) # 첫 번째 값 제거 speeds.pop(0) # 첫 번째 값의 속도도 제거 cnt += 1 # 카운트 1 증가 i..
오늘의 문제https://www.acmicpc.net/problem/11047 몇 년 만에 파이썬으로 풀어봤습니다. 그래서 아주 쉬운 문제로...진짜 input() 빼고 다 까먹어서 문법 검색하며 풀었습니다. 내 풀이N, K = map(int, input().split())Ai = []answer = 0for i in range(0, N): Ai.append(int(input()))Ai.reverse() # 오름차순 -> 내림차순으로 변경for a in Ai: if K == 0: # 0이면 끝 break if a 쉽지만 간단히 설명을 붙이자면해당 문제는 그리디 알고리즘으로 분류되어 있는데, # 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개..