일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- String
- hash
- stack
- heap
- Medium
- Union Find
- ArrayList vs LinkedList
- leetcode
- graph
- Java
- dfs
- greedy
- python3
- Two Pointers
- 자료구조
- sorting
- 구현
- SinglyLinkedList
- VCS
- Bellman-Ford
- LinkedList
- Easy
- Leedcode
- BFS
- Hashtable
- DailyLeetCoding
- 광연자동차운전면허학원
- array
- A* Algorithm
- hash table
- Today
- Total
목록분류 전체보기 (88)
Min IT's Devlog
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nKzb8/btsjXIsZcD4/Pq8kXmtkdMLUXyETdPN9l1/img.png)
이미 점수를 알고 있지만 오늘 최종 합격 발표일이라서 확인해봤다. 이제 곧 실기인데 잘 보길... 기말시험 끝나면 공부 시작해야지. ㅎㅎ
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/m7kW9/btsibbque7f/sHonP90BoXvoKlU9oYxc7k/img.jpg)
풀이 일자: 23.06.01 난이도: [Medium] 분류: [BFS] 문제 내용 내용은 0과 1로 이루어진 배열이 주어졌을 때 (0,0)에서 (n-1,n-1)로 0만 밟으면서 이동할 때 최단 거리를 리턴하는 문제로 이동할 수 있는 범위는 edge와 맞닿아있는 총 8개의 면에 갈 수 있다. 문제 해결 흐름 1. 항상 이러한 배열과 최단거리의 조합은 BFS와 DFS 둘 중 하나를 떠올릴 수 있다. → 나는 BFS를 순회 알고리즘에서 매우 선호하기도 하고 DFS를 사용하기에는 BFS를 사용하는 것보다는 최단거리를 계산하기 부적합하다고 생각하여 BFS를 이용하여 문제를 해결했다. class Solution: def shortestPathBinaryMatrix(self, grid: List[List[int]])..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yeNzR/btsh4nkX8mi/j8FLTwGqkB8ovH0hDNVxtk/img.jpg)
풀이 일자: 23.05.31 난이도: [Medium] 분류: [Hash] 문제 내용 문제의 내용은 사용자들이 지하철을 타고 내릴 때 걸리는 시간의 평균을 리턴하는 문제였다. 문제 해결 흐름 1. 이 문제를 해결하기 위해서 떠오를 만한 방법은 해시정도? → 그 이유는 지하철을 환승한다던가 여러 곳을 거쳐야 한다던가하는 일이 없고 정직하게 시작점과 끝점의 시간정보와 사용자 수에 대한 정보만 가지고 있다면 되기 때문이다. → 또한 해시를 사용할 수밖에 없는 것이 배열에서 startStation과 endStation의 인덱스를 찾아서 그 인덱스로 2D array에서 평균 시간을 리턴하고 체크인 체크아웃을 하기에는 시간이 너무 많이 걸리기 때문이다. → 따라서 이중 해시를 이용해서 문제를 해결해보았다. class..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WCK8M/btshp3MM7bq/z4k5tPFgNMBpfsQKUZQ3W0/img.jpg)
풀이 일자: 23.05.25 ( 나중에 다시 풀어보기..) 난이도: [Medium] 분류: [DP, SlidingWindow, Math] 문제 내용 카드가 1부터 maxPts사이의 정수로 이루어져있고 Alice가 초기 점수 0점에서 시작하여 점수의 합이 k이상이 될 때까지 카드를 뽑는다고 한다. 카드 뽑기가 종료되었을 때 Alice의 점수가 n이하일 확률을 구하는 것이 문제이다. 문제 해결 흐름 1. 처음에 해당 문제를 봤을 때 DP라는 것을 바로 알 수 있다. → 점수의 합이 k이상이 될 때까지 뽑고 점수가 n이하일 확률이기 때문에 dp배열을 이용하여 점진적으로 확률을 계산하는 수밖에 없다. 여기까지밖에 생각하지 못했다. 다른 해결 방식 1. 처음 문제에서 제공한 알고리즘은 TLE가 발생하지만 간단한 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/deTUdj/btsgEc5KSFt/owjN8GgISMiVRF5nragsvk/img.jpg)
풀이 일자: 23.05.22 난이도: [Medium] 분류: [Hash Table, Divide and Conquer, Sorting, Heap, Bucket Sort] 문제 내용 단순하게 숫자 배열이 주어졌을 때 상위 k개의 빈번하게 등장하는 수를 순서상관 없이 리턴하는 문제였다. Follow-up에서는 NLogN의 시간복잡도를 갖는 알고리즘으로 풀어보라고 했다. 문제 해결 흐름 1. 단순하게 생각해보면 dictionary 하나 만들어서 숫자 카운트하고 이를 value기준으로 sort해서 return하면 끝나겠다. class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: cnt = dict(); for i in range..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vwfZM/btsgwaMAXuS/K07bW675aw33hrmAatQSUK/img.jpg)
풀이 일자: 23.05.19 난이도: [Medium] 분류: [DFS, BFS, Union Find, Graph] 문제 내용 이번 문제는 undirected graph가 주어졌을 때 이 노드들을 A와 B그룹으로 나눌 수 있는지 여부를 리턴하는 문제로 각 A,B 내부의 노드끼리는 연결되어 있지 않아야 한다. A와 B는 연결되어 있어도 상관없다. 문제 해결 흐름 1. 처음에는 Graph문제이고 A와 B그룹으로 나눌 수 있기 때문에 Union-Find를 떠올렸다. → 가능은 하겠지만 좀더 쉬운 방법을 떠올리고자 했다 2. A그룹과 B그룹을 나누고 같은 그룹의 노드들이 서로 인접하면 안되기 때문에 노드를 색칠하는 문제로 생각해도 되겠다는 생각을 할 수 있다. → BFS를 이용하여 각 level별로 같은 색으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cqnkwt/btsglPbgSTz/oJzlPHr8W692lMnIEoI8cK/img.jpg)
풀이 일자: 23.05.18 난이도: [Medium] 분류: [Graph] 문제 내용 문제의 내용은 0 ~ N-1까지의 노드가 있는 순환이 없는 graph가 주어졌을 때 모든 노드에 접근하는 것이 목표이다. 최소한의 시작점을 사용하여 위와 같은 목표를 달성할 때 그 때의 시작점들의 집합을 리턴하는 것이 목표이다. 문제 해결 흐름 1. 처음에는 Union-Find를 생각해보았지만 그래프가 방향성이 있는 그래프이고 모두 합쳐져 있어서 부적합하다. → Union-Find는 Pass 2. 그래프를 직접 순회해가면서 각 노드가 접근할 수 있는 노드들의 집합을 구하는 것이 어떨까? → 가능은 하지만 시간이 오래 걸릴 것이다. 이는 cycle이 존재할 수 있어 이에 대한 처리가 필요하고 각 시작점에서 접근가능한 노드..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/neqiI/btsf6Gs1SEO/zxklqU45vmPtqw4P5aUwF1/img.jpg)
풀이 일자: 23.05.17 난이도: [Medium] 분류: [Linked List, Two Pointers, Stack] 문제 내용 오늘의 문제는 LinkedList가 주어졌을 때 i번째 노드와 n-1-i번째 노드를 twin이라고 했을 때 여러 twin들이 등장할 텐데 이 twin내의 노드값의 합이 최대가 되는 값을 리턴하는 문제이다. 문제 해결 흐름 1. 가장 간단하게 array에 값을 저장해놓고 값을 확인했다. class Solution: def pairSum(self, head: Optional[ListNode]) -> int: arr = list(); while head: arr.append(head.val); head = head.next; ans = 0; n = len(arr) for i i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bibjRd/btsf58o2BnL/EgY1PzArWox4aNhhJ0hTK1/img.jpg)
풀이 일자: 23.05.16 난이도: [Medium] 분류: [Linked List] 문제 내용 문제의 내용은 주어진 LinkedList를 홀수번 째 있는 노드와 짝수번 째 노드의 앞뒤를 바뀌는 문제이다. 문제 해결 흐름 1. 단순히 LinkedList의 자료구조 문제이기 때문에 그냥 풀면 된다. class Solution: def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]: node = head; i = 1; pprev = None; prev = None; h = None; if node == None or node.next == None: return node; while node: if i & 1: prev = node; nod..
23년 5월 13일에 시행된 정보처리기사 필기를 치고 왔다. 그 후기를 작성해보고자 한다. 시험 결과는 각 과목별 85 95 90 100 100 으로 확정 점수는 아니지만 총 94점으로 합격했다. 전공자이긴 하지만 코딩을 못하는 입장에서 학과공부만큼은 열심히 했고 운이 좋아서 좋은 결과를 얻을 수 있었던 것 같다. 시험동기 요즘에 크게 중요하지 않다고도 하고 학교 선배님들 이야기를 들어보면 보지도 않는다고 그러긴 했지만 내가 내세울 만한 프로젝트나 이런 것이 현재 부재하기 때문에 내가 제일 잘 할 수 있는 자격증 시험이라도 보고자 했다. 시험준비 시험준비는 길벗출판사에서 나오는 시나공 필기 교재를 사용했으며 이것외에 돌아다니면서 틈틈히 기출을 풀어보기 위해서 틈틈봇-정보처리기사라는 앱..