본문 바로가기

그리디 알고리즘3

(그리디) 백준 1543번 _ 문서검색 (+ Python 3 와 PyPy3는 무엇이 다를까) 이 문제는 맞은 문제이다. N = input("") k = input("") print(N.count(k)) 단 세줄의 코드를 PyPy3로 제출하면 정답이 나오는 어떻게 생각하면 되게 쉬운 문제이다. 그러나 이렇게 따로 정리하는 것은 두가지 이유 때문이다. 1. 위 파이썬 코드를 Python3 로 제출하면 런타임오류가 나와서 PyPy3로 제출했더니 정답처리가 되었다. 2. count라는 파이썬의 치트키를 사용하지 말고 직접 로직을 구현해보고 싶었다. 1. Python3 vs PyPy3 우선 Python3 와 PyPy3가 무엇이 다른지부터 알아보자 PyPy3는 파이썬으로 만든 파이썬이다. 우리가 일반적으로 사용하는 Python은 C언어로 구현 되어있고 그 구현체를 CPython이라고 한다. 이는 가장 처음.. 2022. 2. 5.
(그리디) 백준 21758번 _ 꿀 따기 [Python] https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 그리디 알고리즘에서 "그리디" 즉 탐욕적이라는 말은 "현재 상황에서 지금 당장 좋은 것만 고르는 방법"을 의미한다. 이 문제를 풀면서 누적합과, A = max(A, B)를 통해 최댓값을 계속 업데이트 해주는 두 가지 개념에 대해 배울 수 있었다. 문제를 예시로 누적합에 대해 좀 더 자세히 말해보면, 우선 꿀 합에 대한 누적합은 다음과 같다. # 코드 (문제에 주어진 예시) n = 7 honey_place = [9,9,4,1,4,9,9] prefix_sum=[] prefix_sum.append(a[0]) for i in range(1,n).. 2022. 2. 2.
(그리디) 백준 2872번 _ 우리집엔 도서관이 있어 [Python] https://www.acmicpc.net/problem/2872 2872번: 우리집엔 도서관이 있어 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근 www.acmicpc.net 내가 생각하는 그리디 알고리즘의 핵심 키워드는 "규칙"을 것이다. 이 문제는 책 배열 정리의 규칙을 찾는 것이 생각보다 어려워서 풀지 못했던 것 같다. 또한 책을 빼는 순서까지 고려했었는데 다시 생각해보니 순서는 고려할 필요가 없다. 중요한 것은 "몇 권의 책을 재배열해야 하냐"이고 순서는 어차피 정해져있기 때문에 재배열 해야 할 책의 권수가 곧 정답이 될 것이다. 두 가지 예시를 들어보면,.. 2022. 1. 25.