목록Algorithm (138)
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로 만들려고 한다. 이때 필요한 동전 개..

오늘의 문제https://www.acmicpc.net/problem/1463ㅋㅋ 하... 실환가 진심 풀다가 화딱지 나서 죽을 뻔했네요 내 풀이import Foundationvar N: Int = Int(readLine()!)!var dp: [Int] = Array(repeating: 0, count: 1_000_001) // 10의 6제곱까지 받을 수 있게dp[0] = 0dp[1] = 0 // 초기값 설정func solution(N: Int) { for i in 2...N { // DP 바텀업 방식 : 작은 문제 -> 큰 문제로 상향식 dp[i] = dp[i - 1] + 1 // 기본 값 if i % 3 == 0 { // i가 3의 배수면? if dp[..
오늘의 문제https://www.acmicpc.net/problem/1654 이게... 최소한 내 머릿속에서라도 일정한 규칙대로 예제가 풀려야 코드로 구현을 하든가 말든가 하는데 그냥 내 머리로도 예제 입력 1을 어떻게 처리해야 200이 나오는지 모르겠어서 한참 걸렸다. 이분탐색인 거 알아도 뭘 어디에 이분탐색을 적용해야 할지 감이 안 잡혀서 레전드 나누기만 하다가 결국 검색 찬스를 써서 해결했다. 코드를 보면 이해는 되는데 생각하는 걸 코드로 구현해내는 능력이 너무 부족한 듯. 너무 오랜만에 하려니까 다 까먹어버린 게 제일 크다. 다시 열심히 하겠습니다... 꾸준히가 제일 중요한 것 같다. 설명은 주석으로 적어놨는데 특히 주의해야 할 부분이1. if-else문에서 numOfLAN과 N값이 같을 때 처리..