본문 바로가기

전체 글

Binary Tree Level Order Traversal (Queue) LeetCode의 Binary Tree 튜토리얼의 첫 번째 섹션의 네 번째 문제인 Binary Tree Level Order Traversal다. 이전 Binary Tree Inorder Traversal (Stack) 포스트에서 간단하게 다루었던 Level-order 방식으로 탐색하는 문제다. 이는 같은 높이에 있는 모든 노드를 한 번에 탐색하는 것이기 때문에 약간 BFS와 유사하다고 볼 수 있다. 위처럼 여러 계층의 노드가 있을 때 첫 번째 계층에 있는 노드는 노드 1밖에 없기 때문에 이를 탐색하고 두 번째 계층에 있는 노드는 노드 2, 노드 3이 있기 때문에 이를 둘 다 탐색한다. 그리고 세 번째 계층에 있는 노드는 노드 4, 노드 5가 있기 때문에 역시 이를 둘 다 탐색한다. 이렇게 한 계층, 높.. 더보기
Binary Tree Postorder Traversal (Stack) LeetCode의 Binary Tree 튜토리얼 첫 번째 섹션의 네 번째 문제인 Binary Tree Postorder Traversal다. In-order, Pre-order와 다르게 오늘따라 집중이 더 잘 안돼서 그런가 몇 시간을 허비한 것 같다. 안 되겠어서 그냥 풀이를 찾아봤는데 재귀적인 방식으로 하면 간단하지만 이전처럼 스택을 활용해서 푸는 방법은 없을지 고민하고 찾아보다가 시간을 너무 낭비한 것 같다. 알고리즘은 이곳에서 참고했다. 하나의 스택과 두 개의 노드 포인터를 사용하는데 노드 포인터는 각각 현재 탐색하는 노드, 이전에 탐색했던 노드를 가리키고 있으며 좀 특이하게 두 노드 포인터의 상하 관계(부모, 자식 노드)가 자주 바뀌기 때문에 이해하기가 좀 어려웠던 것 같다. Iterative P.. 더보기
Binary Tree Preorder Traversal (Stack) LeetCode의 Binary Tree 튜토리얼을 시작하게 됐다. 그중 첫 번째 문제인 트리의 Pre-order 탐색을 구현하는 문제인 Binary Tree Preorder Traversal이다. Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 문제는 간단하다. 이전에 풀었던 Binary Tree Inorder Traversal (Stack)과 비슷하게.. 더보기
Valid Palindrome (Deque) 드디어 파이썬 알고리즘 인터뷰 책을 좀 읽어보게 됐다. LeetCode에서 튜토리얼을 진행할 때는 자바로 했지만 프로그래머스나 혼자 풀 때는 파이썬 언어를 사용하고자 한다. 책에서 소개하는 문제들을 먼저 풀어보고 다른 사람들의 풀이나 책에 나온 내용들을 기반으로 개선방안을 학습하며 포스팅할 예정이다. 이번 문제는 LeetCode의 Easy 문제인 Valid Palindrome이다. Valid Palindrome - 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 .. 더보기
Keys and Rooms (BFS) 이번 문제는 LeetCode의 Queue, Stack 튜토리얼의 마지막 문제인 Keys and Rooms다. 문제의 조건은 다음과 같다. N개의 방이 주어지고 0번 방에서부터 시작한다. 이 방은 List 타입으로 주어진다. 각 방에는 다른 방으로 갈 수 있는 열쇠가 있다. 이 열쇠들은 List 타입으로 주어진다. 0번 방에서부터 시작하여 열쇠들을 이용하여 모든 방에 방문할 수 있는지 여부를 확인하라. 방 이동에 제약은 없으며 0번 방을 제외한 모든 방은 방문한 적이 없는 상태다. 각 방과 방에 들어있는 열쇠는 리스트로 주어지는데 예를 들어 [[1], [2], [3], []]처럼 주어진다면 이는 총 4개의 방이 있으며 0번 방에는 1번 열쇠가, 1번 방에는 2번 열쇠가, 2번 방에는 3번 열쇠가 들어있는 .. 더보기
01 Matrix (BFS) LeetCode의 Queue, Stack 튜토리얼의 마지막 섹션의 5번째 문제인 01 Matrix다. Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 문제는 다음과 같다. 0과 1로 이루어진 2차원 배열이 주어진다. 인접한 두 셀의 거리는 1이다. 각 셀은 상하좌우로만 인접하고 있다. 각 셀에서 가장 가까운 0셀까지의 거리를 2차원 배열로 반환하라. 문.. 더보기
Spring의 의존성 주입(Dependency Injection) 의존성 주입 스프링의 큰 특징 중 하나는 Dependency Injection(DI, 의존성 주입)을 지원한다는 것이다. 의존성 주입 자체는 스프링에 한정된 개념이 아니고 객체 간 관계를 다루는 방법 중 하나인데 일단 의존성이라는 것은 다음과 같다. public class MemberRegisterService { private MemberDAO memberDAO = new MemberDAO(); public long regist(...){ memberDAO.requestRegiest(...); ... } ... } 위의 MemberRegisterService 클래스에서는 MemberDAO 클래스의 객체를 직접 new 연산자로 생성하여 그의 메서드를 사용하고 있다. 이 경우 MemberRegisterSe.. 더보기
Spring의 ApplicationContext, BeanFactory 2021/02/12 - [프레임워크/Spring] - Spring의 @Configuration, @Bean Spring의 @Configuration, @Bean 스프링을 공부한지 얼마 안되서 아직은 모르는게 많다. 그래서 책을 읽어보면서 모르는 내용이 나오면 검색해서 알아보고 포스트를 작성하는 식으로 조금 꼼꼼하게 진행하고자 한다. 먼저 스프 haruhiism.tistory.com 지난번 포스트에서는 AnnotationConfigApplicationContext라는 것을 만들어서 Bean 객체를 받아와 메서드를 활용했다. 이 긴 이름의 객체는 ApplicationContext 인터페이스를 구현하는 클래스의 객체인데 이 인터페이스는 애플리케이션의 메시지, 환경 변수, 프로필, Bean 객체 조작 등 스프링.. 더보기