
⚠️이 시리즈의 저작권은 인프런 코딩테스트 [ ALL IN ONE ] 강의에 있습니다. 리스트 순서를 가지고 원소들을 저장하는 자료구조로, sequence라고도 불린다.

📜문제 해석 int형 배열 nums와 int형 target이 주어졌을 때, 더해서 target이 되는 nums의 index 2개를 리턴하라. 각각의 input에는 정확히 하나의 솔루션만 존재하고, **같은 원소를 2번 사용할 수 없다.** 🚧제약 조건 2 <=
🤔Linked List란? : Node라는 구조체가 연결되는 형식으로 데이터를 저장하는 자료구조를 말한다. 🔖Node: 데이터 값(value)과 다음 주소값(next)로 구성되어 있는 구조체 💻Node는 간단하게 다음과 같이 클래스로 구현할 수 있다 💡지난

https://leetcode.com/problems/design-browser-history/description/ 📜문제 해석 당신은 homepage로부터 시작하는 브라우저 탭을 가지고 있습니다. 그리고 당신은 다른 url 페이지를 방문할 수 있고, 기록에 있는
큐(Queue) 간단하게 대기줄을 생각하면 되는데, 먼저 들어간 데이터가 먼저 나오는 FIFO(First-In First-Out) 자료구조다. 큐의 연산 enqueue: 큐의 뒤(rear)에 데이터를 삽입 dequeue: 큐의 앞(front)에서 데이터를 삭제 💻

https://leetcode.com/problems/valid-parentheses/description/ 📜문제 해석 '(', ')', '{', '}', '[' ,']'의 문자가 포함된 문자열 s가 주어졌을 때, 입력 문자열이 유효한지 검사하라. 문자열이 유효하

https://leetcode.com/problems/daily-temperatures/description/일상 온도를 나타내는 int형 temperatures 배열이 주어졌을 때, answeri는 i번째 날에서 더 따뜻해지기를 기다려야 하는 날을 의미한다.

해시테이블(Hash Table) 👉해시함수 h를 사용하여 key-value 쌍의 데이터를 입력받고, h에 key값을 입력으로 넣어 얻은 해시값 h(k)를 위치로 지정하여 key-value 데이터 쌍을 저장한다. 👍삽입, 삭제, 검색의 시간복잡도는 모두 O(1)이다.

...Two sum 문제를 여러 번 풀었는데, 같은 문제도 여러 방식으로 풀어서 그냥 로고와 함께 또썸으로 이름 짓겠다.int형 nums 배열과 int형 target이 주어졌을 때, 더해서 target을 만족하는 2개의 숫자 인덱스를 리턴하라.(단, 같은 원소는 다시

💻코드 구현 🚩이 코드의 문제점은 외부 루프 내에서 최소값을 찾기 위해 map.keySet()을 순회하는 부분인데, 이 작업이 외부 루프가 반복될 때마다 수행되어 O(n²) 시간 복잡도가 발생한다는 것이다. 💡while (map.containsKey(min_v

🔖재귀: 자신을 정의할 때, 자기 자신을 재호출하는 것을 말한다. 대표적인 재귀함수는 팩토리얼과 피보나치가 있는데, 지겹게 봤으니 자세한 함수 정의와 동작 과정은 생략한다. 재귀의 수학적 접근 대부분의 재귀함수는 점화식(recurrence relation)으로 표

지난 시간에는 대부분의 비선형구조인 트리, 그래프, 힙에 많이 사용되는 재귀를 학습했는데 이번 시간에는 비선형구조 중 하나인 트리를 배워보겠습니다. 🔎먼저 트리의 정의와 용어를 알아보겠습니다. 🔖트리: 서로 연결된 Node의 계층형 자료구조로서, root와 부모-

지난 시간에는 queue를 이용해서 bfs와 비슷한 level order traversal를 학습해보았는데, 이번 시간에는 재귀를 활용해서 dfs와 비슷한 전위순회(preorder traversal), 중위순회(inorder traversal), 그리고 후위순회(pos

https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/ 📜문제 해석 이진 트리가 주어졌을 때, 트리에서 주어진 두 노드의 가장 낮은 공통 조상 (LCA)을 찾으십시오. 🔖L

이 문제는 트리의 최대 깊이만 구하면 되기 때문에 bfs, dfs 2가지 모두로 풀 수 있다. bfs(levelOrder) 풀이 💻코드 구현 👍커스텀 클래스를 사용하면 필요한 필드(여기서는 level)를 추가해서 함수에 원하는대로 사용할 수 있기 때문에 좋다.
🔖그래프: 정점(vertex)들의 집합 V와 이들을 연결 하는 간선(edge)들의 집합 E로 구성된 자료구조를 말하며, $$G = (V, E)$$로 표현한다. 📢여기서 잠깐! 그래프의 종류를 학습하기 전에, 이전 시간에 배운 트리와 그래프의 차이점을 알아보자.
이전 시간에 배운 트리의 순회 방법인 levelorder traversal(bfs), dfs와 그렇게 큰 차이는 없다. 다만, base condition에서 약간의 차이를 보인다. 💻bfs 코드 🚩파이썬에서는 visited를 간단하게 리스트로 표현해서 if v

https://leetcode.com/problems/number-of-islands/description/ 📜문제 해석 m x n 2차원 binary grid가 주어졌을 때, 섬들의 수를 리턴하라.(grid의 '1'은 land를, '0'은 물을 의미한다.) 섬들은

https://leetcode.com/problems/shortest-path-in-binary-matrix/description/ 📜문제 해석 n x n 이진 행렬 grid가 주어졌을 때, 행렬에서 가장 짧은 clear path를 리턴하라.(단, clear path

https://leetcode.com/problems/keys-and-rooms/description/0부터 n-1까지의 번호가 있는 n개의 방들이 있고, 모든 방들은 0번 방을 제외하고 모두 잠겨있다.너의 목표는 모든 방들을 방문하는 것이다. 하지만, 당신은
📢이전에 파이썬 버전으로 정리한 것이 있으므로, 자세한 내용은 코딩테스트-올인원[파이썬 버전]을 참고하시기 바랍니다. 🤩기존의 피보나치 top-down, bottom-up을 자바 버전으로 구현해보았다👇 💻피보나치 Top-down 코드 구현 대부분 코테 문제

https://leetcode.com/problems/climbing-stairs/description/당신은 계단을 오르고 있다. top까지 도달하는데 n 스텝이 걸린다. 당신은 1 걸음 또는 2걸음씩 올라갈 수 있다. top까지 도달하는데 distinct

https://leetcode.com/problems/min-cost-climbing-stairs/description/당신은 int 타입의 cost 배열이 주어졌는데, costi는 i번째 계단을 밟았을 때 지불해야 하는 비용이다. 당신이 비용을 지불하면, 당

https://leetcode.com/problems/unique-paths/description/ 📜문제 해석 m x n grid에 로봇이 있다. 로봇은 처음에 grid0에 위치해 있다. 로봇은 gridm-1로 이동하려고 한다. 로봇은 한번 움직일 때 아래 또는 오

📢이번 글에서는 자바 언어로 힙 자료구조를 구현하는데 초점을 맞출 것이니, 힙 자료구조에 대한 자세한 내용은 힙(파이썬 버전)을 참고하세요.우선순위 큐 마지막 공간에 7을 넣으면7이 포함된 subtree에서 부모 노드와 값을 비교하고, 자식 노드가 부모 노드보다 값이
💻다익스트라 📚참고자료 우선순위 큐의 제네릭 타입을 커스텀 클래스로 만드는 방법: https://velog.io/@gillog/Java-Priority-Queue%EC%9A%B0%EC%84%A0-%EC%88%9C%EC%9C%84-%ED%81%90#priority
https://leetcode.com/problems/network-delay-time/description/1~N번 까지의 N개의 노드가 주어졌다.\-> dist를 n+1 크기로 초기화해야겠구나?유향 그래프를 가진 times\[i] = (u, v, w): u
📢이 포스트는 백트래킹의 대표적인 예시인 순열, 조합, 부분집합을 자바 코드로 구현을 하기 위한 글이기 때문에 자세한 내용이 궁금하시면 완전탐색(파이썬 버전)을 참고하시면 됩니다. 💡백트래킹은 State Tree(DFS) 자료구조를 기반으로 동작하는 재귀함수 알고

📢two sum은 여러 번 풀어봤으므로, 문제 해석 부분은 생략하겠습니다.백트래킹 조합 함수 템플릿을 사용해 후보군을 찾는다.조합의 한 집합을 모두 더했을 때 target과 일치하면일단 temp 리스트에 val들을 삽입한다.nums의 val과 temp의 val이 일치