전체 글
-
백준 14247번 : 나무 자르기 | 그리디 [Python]카테고리 없음 2025. 4. 12. 09:29
백준 14247 문제영선이는 나무꾼으로 나무를 구하러 오전에 산에 오른다. 산에는 n개의 나무가 있는데, 영선이는 하루에 한 나무씩 n일 산에 오르며 나무를 잘라갈 것이다. 하지만 이 산은 영험한 기운이 있어 나무들이 밤만 되면 매우 빠른 속도로 자라는데, 그 자라는 길이는 나무마다 다르다.따라서, 어느 나무를 먼저 잘라가느냐에 따라서 총 구할 수 있는 나무의 양이 다른데,나무의 처음 길이와 하루에 자라는 양이 주어졌을 때, 영선이가 얻을 수 있는 최대 나무양을 구하시오.참고로, 자른 이후에도 나무는 0부터 다시 자라기 때문에 같은 나무를 여러 번 자를 수는 있다.입력첫째 줄에는 나무의 개수 n개가 있다. 나무는 1번부터 n번까지 있다.다음 줄에는 첫날 올라갔을 때 나무의 길이들 Hi_i가 n개가 순..
-
백준 19941 : 햄버거 분배 | 그리디 알고리즘카테고리 없음 2025. 4. 11. 10:06
https://www.acmicpc.net/problem/19941 문제기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 K$K$ 이하인 햄버거를 먹을 수 있다.햄버거사람햄버거사람햄버거사람햄버거햄버거사람사람햄버거사람123456789101112위의 상태에서 K=1$K = 1$인 경우를 생각해보자. 이 경우 모든 사람은 자신과 인접한 햄버거만 먹을 수 있다. 10번의 위치에 있는 사람은 11번 위치에 있는 햄버거를 먹을 수 있다. 이 경우 다음과 같이 최대 5명의 사람이 햄버거를 먹을 수 있다.2번 위치에 있는 사람: 1번 위치에 있는 햄버거4번 위치에 있는 사람: 5번 위치에 있는 햄버거6번 위치에 있는 사람: 7번 위치에 있는 햄버거9..
-
백준 2529 | 부등호, Permutation카테고리 없음 2025. 4. 10. 09:15
백준 2529: 부등호 문제두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들어 3456128790 뿐만 아니라 5689023174도 ..
-
백준 온라인 저지, DFS | 2210번: 숫자판 점프카테고리 없음 2025. 4. 9. 09:09
https://www.acmicpc.net/problem/2210 백준 2210번 문제: 숫자판 점프 문제5×5 크기의 숫자판이 있다. 각각의 칸에는 숫자(digit, 0부터 9까지)가 적혀 있다. 이 숫자판의 임의의 위치에서 시작해서, 인접해 있는 네 방향으로 다섯 번 이동하면서, 각 칸에 적혀있는 숫자를 차례로 붙이면 6자리의 수가 된다. 이동을 할 때에는 한 번 거쳤던 칸을 다시 거쳐도 되며, 0으로 시작하는 000123과 같은 수로 만들 수 있다.숫자판이 주어졌을 때, 만들 수 있는 서로 다른 여섯 자리의 수들의 개수를 구하는 프로그램을 작성하시오.입력다섯 개의 줄에 다섯 개의 정수로 숫자판이 주어진다.출력첫째 줄에 만들 수 있는 수들의 개수를 출력한다.예제 입력 1 복사1 1 1 1 11 1..
-
백준 1182 | 부분 수열의 합카테고리 없음 2025. 4. 8. 08:59
백준 문제 1182 https://www.acmicpc.net/problem/1182 파이썬의 combination 이란 아주 근사한 tool을 사용하면매우 쉽게 풀리는 문제이다. combination 함수를 사용하면 알아서 모든 조합을 보여준다. 해당 tool 을 이용해 for loop 에 중첩을 걸어,조건문 if 절을 걸면 끝. # import combinationsfrom itertools import combinations# receive the inputn, s = map(int, input().split())numbers = list(map(int, input().split()))# answeranswer = 0for i in range(1, n + 1): for j in combi..
-
백준 16937 두 스티커 | Brute ForceTech 2025. 4. 7. 08:58
백준 문제집 16937 풀이 문제: 즉, 일정한 면적이 주어지고 n개의 스티커와 각 크기들이 주어졌을 때2개의 스티커만 골라 최대의 면적을 만드는 문제다. 처음에 회전 부분까지 생각했을 때,실제로 회전시켜서 구하는 방법까지 구현했어서이게 맞나? 란 생각이 들었다. 분명 더 쉽운 방법이 있을거 같아서다시 문제로 돌아가 천천히 읽었다. 여기서의 핵심은스티커의 회전의 값이 직접 필요한게 아니라그냥 돌렸다고 전제해도 무방하다는 것이다. 그 부분에서 아이디어를 얻어for loop 을 사용해 전체 4가지 케이스 별로if 구절을 넣어 나눠주었다. 1. sticker 1, 2 둘 다 회전을 하지 않는 경우2. sticker 1 회전할 경우3. sticker 2 회전할 경우4. sticker 1, 2 둘 ..
-
Binary Tree - Inorder, Postorder, Preorder 코드 구조카테고리 없음 2025. 3. 24. 04:25
DFS base Post-order, Pre-order, In-order 구조 Preorder, Inorder, Postorder 의 구조는 전체적으로 흡사하지만어디서 어떻게 재귀함수를 호출하느냐 차이이다.크게 root, left, right 구조로 나뉘어지고 root 를 제일 먼저 호출하는건 Preorderroot 를 가운데서 호출하는건 Inorderroot를 맨 마지막에 호출하는건 Postorder 여기서 'root를 호출하다'의 의미는해당 Node 그 자신을 의미하며코드의 목적에 따라조건절이 들어가도 되는 부분을 의미한다. DFS 코드 구조Nodes = []def preorder(node): if node is None: return Nodes.append(node.v..
-
HashMap & HashSet 차이점Tech 2025. 3. 24. 03:24
HashMap/Dictionary키(Key)와 값(Value) 쌍을 저장하는 자료구조HashMap 형태로 사용됨Key는 중복 불가, Value는 중복 가능내부적으로 해시 테이블(배열 + 연결 리스트/트리) 을 사용하여 빠른 탐색추가 데이터 삽입시, add() method 를 사용평균 시간 복잡도 O(1), O(n) - 최악의 경우, interrupt hashHashSet키(Key)와 값(Value) 쌍을 저장하는 자료구조HashSet 형태로 사용됨 (Key만 저장하는 HashMap과 유사)중복된 값 저장 불가내부적으로 해시 테이블을 사용하여 검색 속도가 빠름평균 시간복잡도 O(1) 저장 방식키-값 (Key-Value) 쌍으로 저장고유한 값(Value)만 저장Key 중복 가능 여부❌ 불가능 (유일한 키 필..