본문 바로가기

전체 글

(133)
[Python] 백준 2512. 예산 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 설명: 국가예산이 주어졌을때 지방예산요청의 합이 국가예산보다 큰 경우 상한액을 설정 그 합이 가능한 국가예산을 벗어나지 않고 최대가 되도록 구하는 문제 만약 국가예산이 485이고 지방예산요청이 120 110 140 150 일 때 합이 485를 넘어가게 된다. 그럼 상한액을 설정해서 상한액이 127이 될때 120 110 127 127이 되어 합이 484로 예산의 최대액이 된다. start..
[Python] 백준 2805. 나무자르기 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 설명: 상근이가 얻으려는 나무의 길이 M , 나무의 수 N M을 얻기 위해 절단기로 자를 수 있느 나무의 최대 높이값을 구하는 문제 만약 4개의 나무 [20, 15, 10, 17]이 주어질때 7미터 얻으려고 할때 15미터로 설정하고 자르면 [0,0,5,2] 7미터를 얻을 수 있다. 이진탐색으로 풀 수 있지만 조금 방법을 바꿔보고 싶었다. 나무의 리스트를..
[Python] 백준 1654. 랜선 자르기 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 설명: 만약 4개의 랜선이 주어지고 11개의 랜선을 만들려고 할 때 최대 길이 갯수를 구하는 문제이다. 4개의 랜선은 예를 들면 [802, 743, 457, 539] 랜선의 길이가 주어진다. 최대 길이가 200일때 802cm 랜선에서 4개, 743cm 랜선에서 3개, 457cm 랜선에서 2개, 539cm 랜선에서 2개를 잘라내 모두 11개를 만들 수 있다. 이진탐..
[Java] 추상화(Abstraction) 추상화 : 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합하는 것 클래스(class) : 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념 객체(instance) : 유일무이(unique)한 사물, 클래스의 인스턴스 클래스:객체 = 사람:김연아 = 사람:홍길동 ex) 사람 클래스를 만들기 위해 주변에 보이는 공통적인 특성 시력, 몸무게, 혈액형, 키, 나이 등 명사로 표현되는 것 -> 속성(값) 먹다, 자다, 일하다 , 침 뱉다. -> 기능 행위(함수) class 사람 { float 시력; int 몸무게; int 키; void 먹다{...} void 일하다{...} 만약 애플리케이션을 만들었는데 사람에 대한 클래스를 이용해 객체를 만들때 필요없는 속성과 기능들이 있을 것이다. 병원 애플..
[Python][leetCode] List Sort(리스트 정렬) https://leetcode.com/problems/sort-list/description/ Sort List - LeetCode Can you solve this real interview question? Sort List - Given the head of a linked list, return the list after sorting it in ascending order. Example 1: [https://assets.leetcode.com/uploads/2020/09/14/sort_list_1.jpg] Input: head = [4,2,1,3] Output: [1, leetcode.com 문제설명 연결 리스트가 주어졌을때 퀵 정렬로 정렬하는 방식으로 구현해보았다. quick sort 방식은..
[Python][LeetCode] Insertion Sort List(삽입 정렬 리스트) https://leetcode.com/problems/insertion-sort-list/description/ 문제 설명: 연결리스트로 노드들이 주어졌을때 이것을 삽입정렬 방식으로 정렬하는 것이다. head는 링크들로 연결된 노드들로 이루어져있다. 1. 더미노드를 만든다. 2. 더미노드에 다음노드로 head가 가르키는 노드 값을 새로운 노드로 만들어 next로 추가한다. 3. 더미노드에 포인터 p를 두어 p가 증가하면서 새로운 노드들이 위치 할 곳을 찾는다. 예시 [4,6,5,9,1] test = ListNode(4, ListNode(6, ListNode(2, ListNode(9, ListNode(1))))) Solution().insertionSortList_2(test) 더미노드는 지금 빈 노드를 ..
Git branch/log 옵션 시작하기전 셋팅 Desktop > git > gitfth3에서 작업을 진행 (base) bagjeongmin@bagjeongmin-ui-MacBookAir git % mkdir gitfth3 (base) bagjeongmin@bagjeongmin-ui-MacBookAir git % ls -al total 24 drwxr-xr-x 6 bagjeongmin staff 192 10 28 13:14 . drwx------@ 24 bagjeongmin staff 768 10 27 09:07 .. -rw-r--r--@ 1 bagjeongmin staff 8196 10 28 11:37 .DS_Store drwxr-xr-x 5 bagjeongmin staff 160 10 27 09:47 gitfth drwxr-xr-x..
[Python] Heap(힙) / heapq 모듈 1. 힙(Heap) 이란? 힙 : 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 완전 이진 트리 : 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 힙을 사용하는 이유 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n)이 걸림 이에 반해, 힙에 데이터를 넣고 최대값과 최소값을 찾으면 O(logn)이 걸림 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨. 2. 힙(Heap) 구조 힙 property : A가 B의 부모노드이면 A의 키값과 B의 키값 사이에는 대소 관계를 성립한다. 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 항상 크거나/작거나 같다 최소 힙: 부모..