본문 바로가기

전체 글

(172)
[Leetcode 22/100] Top K Frequent Elements - Medium leetcode.com/problems/top-k-frequent-elements/ Top K Frequent Elements - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀이 방식 클래스를 새로 만들고 정렬 기준을 변경하여 풀이 주의할 점 IDE 없이 코딩 할 때 compareTo 매서드의 인자를 어떻게 해야하는지 기억이 안났다.. 더 상세하게 기억하자 이 문제에서는 내 풀이 말고 다른 방식으로 힙과 같은 자료구조 풀이를 요구하는 것 같은데 disc..
[Leetcode 21/100] Kth Smallest Element in a BST - Medium leetcode.com/problems/kth-smallest-element-in-a-bst/ Kth Smallest Element in a BST - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀이 방식 BST이므로 트리순회의 특징을 활용 주의할 점 트리순회의 특징을 이해하고 있다면 쉽게 접근할 수 있는 문제였다. 소스코드
[Leetcode 20/100] Linked List Cycle - easy 문제 풀이 방식 1. HashSet 활용 2. 토끼와 거북이 알고리즘 활용 주의할 점 1. hash를 활용한 풀이는 자료구조의 특성을 이용한 것이므로 특성만 잘 이해하고 있다면 구현에만 신경 쓰면된다. 2. 토끼와 거북이 알고리즘은 싱글 링크드 리스트에서 사이클을 찾을 수 있는 알고리즘으로 거북이는 1칸씩 토끼는 2칸씩 이동했을 때, 사이클이 있다면 토끼랑 거북이는 만나게 된다. 이것을 활용한 풀이 방식이다. 소스코드
[Leetcode 19/100] Generate Parentheses - Medium 문제 풀이 방식 백트래킹 , Stack 자료구조 활용한 괄호 검사 로직 구현 주의할 점 괄호 검사 로직을 구현하는게 오랜만이라 약간 헷갈렸다. '('면 스택에 넣고, ')'일 경우에는 스택안의 괄호랑 비교해나가면 된다. 이 때, 주의해야할 것은 ')' 괄호를 검사할 때, 스택이 비어있으면 결과를 false를 리턴하면 되지만 모든 검사가 종료후에는 스택이 비어있지 않으면 결과를 false로 리턴해야한다. 소스코드
[Leetcode 18/100] Combination Sum - Medium 문제 풀이 방식 백트래킹 주의할 점 1. 백트래킹 함수의 재귀 종료조건을 생각하는것 2. 조합이지만 중복이 가능하므로 따로 visitied 배열을 만들어서 체크하지 않았음. 3. 참조 배열을 이해하는 것 소스코드
[Leetcode 17/100] Queue Reconstruction by Height - Medium 문제 풀이 방식 정렬을 활용한 구현 문제 주의할 점 문제를 풀지 못해서 discuss를 보았는데, 거의 비슷하게 접근했지만 풀지 못해서 아쉬웠음.. 이런 문제 같은 경우에는 항상 sort를 먼저 해보면 해결 방법이 나오는 경우가 많은 것 같은데, 다른 문제를 풀 때 꼭 이런 방법을 기억해 놓아야 겠음. 또한 문제를 풀이하기 위한 설계를 완벽하게 하지 않고 코드를 작성하는 버릇을 고쳐야겠다. 소스코드
DI(Dependency Injection)란? GOAL 객체지향에서 의존성을 이해한다 DI의 개념과 도입 이유를 이해한다. Spring에서 어떻게 사용하고 있는지 이해한다. 객체지향에서의 의존성이란? 객체지향 프로그래밍의 장점 중 하나는 모듈화를 통한 유연성 있는 프로그램을 설계하고 코드를 재사용하여 유지보수를 용이하게 만들 수 있다는 것이다. 객체지향에서는 의존성 있는 코드를 싫어한다. 의존성이 필요 없다면 제거해야 하며, 클래스 간의 양방향 의존성을 가지고 있다면 문제점이 발생할 수도 있다. 왜 그럴까? 아래 코드의 문제점은 무엇일까? room 객체는 Bed 객체에 의존하고 있다. -> new 연산자를 통해 Simons() 객체를 주입받아 의존성을 가지고 있다. 역할에 의존해야 되는데 구현에 의존하고 있다. 아니 뭐 가질수도 있지.. 참.. 어려..
[Leetcode 16/100] Online Stock Span - Medium 문제 풀이 방식 Deque을 사용했지만 스택 자료구조의 성질을 활용해서 풀이했다. 주의할 점 선형시간에 문제를 풀어야 하므로 처음부터 시간 복잡도를 생각하고 풀이를 접근해야 한다. 그리고 문제를 이해했다면 그림을 그려서 풀이를 생각해보는 것도 좋은것 같다. 아이디어를 생각해내면 구현은 쉬운 문제였지만, 아이디어를 생각하기는 쉽지 않았다. 소스코드