본문 바로가기
728x90

TIL61

[231218] 이진트리, 힙 이진 트리 (Binary Tree) 이진 트리의 종류에 대해서 확실히 모른다는 생각이 들어서 정리해보았다. 트리(tree): 노드와 엣지로 이루어진 비선형 계층적 자료구조 이진 트리의 종류 1. 이진 트리: 모든 노드들이 두 개 이하의 자식을 가진 트리 2. 이진 탐색 트리 (Binary Search Tree, BST): 왼쪽 자식은 부모보다 작고 오른쪽 자식은 부모보다 큰 이진 트리 삽입, 삭제, 탐색의 시간복잡도: 평균 O(logN), 최악 O(N) 순회 종류 전위 순회: root -> left child -> right child 중위 순회: left child -> root -> right child 후위 순회: left child -> right child -> root 3. 정 이진 트리 (f.. 2023. 12. 18.
[231213] MySQL 공부 동명 동물 수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/59041 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 동물의 중복되는 이름과 그 개수를찾는 문제이다. 중복되는 이름의 개수를 어떻게 세면 좋을지 몰라 처음에 어렵게 느껴졌다. Order by로 이름으로 그룹화해서 각 그룸 내에서 count를 이용해줌으로써 해결할 수 있다. 코드 SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1.. 2023. 12. 13.
[231211] Spring 심화 개인 과제 피드백 이번 심화 개인 과제로 테스트 코드를 작성하는 과제가 나왔다. 테스트 과제를 진행하면서 궁금했던 점들을 깃허브 이슈에 남겨놓았고, 이를 토대로 튜터님께서 답변을 남겨주셨다. 1. 테스트 시 기존 코드에 없는 생성자가 필요한 경우 예를 들어 reqeustDto 같은 경우 테스트를 위해서 값을 넣어줘야 했는데, 기존의 코드에서는 Getter만 있었기 때문에 생성자를 추가해주었다. 테스트로 인해서 기존 코드의 변경이 있는 것은 좋지 않다는 생각이 들어서 이에 대해 질문을 남겼다. 답변: 이런 경우 생성자는 NoArgsConstructor의 AccessLevel을 PROTECTED로 정의하고 mockBuilder를 사용해서 명확하게 객체를 만들 때 mockBuilder를 사용하는 방법이 있습니다. // ex. .. 2023. 12. 11.
[231207] 심화 주차 조별 과제 필터 예외 처리 필터쪽에서 발생한 Exception에 대해서도 원하는 형식으로 반환할 수 있도록 구현하고자 했다. 필터에서 발생한 예외를 처리하는 방법으로 필터를 추가하는 방법이 있다고 듣게 되어서 이에 대해 찾아보고 구현해보았다. ExceptionHandleFilter jwt 관련 예외를 다룬다 public class ExceptionHandleFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { t.. 2023. 12. 7.
[231206] 프로그래머스 피로도 (Java) 깊이 우선 탐색(DFS, Depth-First Search) 트리나 그래프를 탐색하는 기법 중 하나 시작 노드에서 자식의 노드들을 순서대로 탐색하면서 깊이를 우선으로 탐색하는 알고리즘 완전탐색 알고리즘 주로 반복문을 활용하거나 재귀문을 통해 구현됨 DFS의 기본 탐색 과정 현재 노드를 방문한 것으로 표시 방문한 표시가 되어 있지 않은 인접한 정점을 탐색 더 이상 방문하지 않은 정점이 없으면 이전 정점으로 역추적(backtracking)한다. 모든 정점을 방문할 때까지 프로세스를 반복 DFS의 장단점 장점 목표가 특정 정점에 최대한 빨리 도달하는 것일 때 유용 단점 순환 그래프일 경우 무한 루프에 빠질 수 있음 피로도 문제가 완전탐색 문제인 것을 보고 DFS 알고리즘으로 해결하고 싶었다. DFS 알고리즘을.. 2023. 12. 6.
[231204] 심화 주체 개인과제: 테스트 Spring 심화 주체 개인 과제로 테스트 코드를 작성하는 과제가 나왔다. 지난번에 제출했던 todoapp 코드를 가지고 테스트 코드를 작성했다. 과제를 마무리하면서 이번에 작성해본 테스트 코드를 정리해보려고 한다. 깃허브: https://github.com/dlwls423/todoapp Entity, Dto 테스트 Card에 있는 setComplete 매서드를 테스트 class CardTest { Card card; @BeforeEach() void setUp() { card = new Card(); } @Test @DisplayName("setComplete 테스트") void test1() { card.setComplete(true); assertTrue(card.isComplete()); } } .. 2023. 12. 4.