728x90

Java 177

[NeetCode-LeetCode] Decode Ways JAVA

[NeetCode-LeetCode] Decode Ways - Medium 접근dp풀이숫자를 문자로 해독할 때 해독한 문자열이 몇 가지로 표현할 수 있는지 구하는 문제이다. 숫자는 1부터 26까지 알파벳과 매칭되고 26을 넘어가는 경우 27이 아닌 2와 7로 나눠져 해석된다. 그렇다 보니 10~26 사이의 숫자들도 나눠서 해석될 수 있다. 17이라는 숫자가 있는 경우 17로 해석되어 q가 될 수 도 있고 1과 7로 나눠져 ag로 해석이 될 수 도 있기 때문에 이렇게 해석될 수 있는 모든 경우의 수를 구해야 한다.  dp 문제로 앞에서부터 체크하며 값을 쌓아나간다. public int numDecodings(String s) { if (s == null || s.isEmpty() || s...

[NeetCode-LeetCode] Palindromic Substrings JAVA

[NeetCode-LeetCode] Palindromic Substrings - Medium 접근중심 확장풀이팰린드롬을 만족하는 부분 문자열을 찾는 문제이다. 문자열 내에 존재하는 모든 부분 문자열에 대해 팰린드롬을 검사하고 개수를 반환하여야 한다. 똑같은 문자라도 문자열 내 위치가 다르다면 한 개의 부분 문자열로 취급한다. 예시에 있는 "aaa" 문자열의 경우에도 첫 번째 두 번째 세 번째 a 모두 개별 문자로 취급하여 "aaa" 문자열의 총 부분 팰린드롬 문자열은 "a", "a", "a", "aa", "aa", "aaa"로 6개의 팰린드롬 부분 문자열을 가지고 있다.  팰린드롬이란 데칼코마니처럼 문자열을 앞으로 읽어도 뒤로 읽어도 동일한 문자열을 말한다. 팰린드롬 문자열인지 검사를 하기 위한 방법은 ..

[TOY] 개발 - 프론트엔드(Post)

이전 진행 상황공통 페이지 개발user 페이지 개발마지막 파트인 post와 에러 페이지에 대한 내용입니다. posterrorPost게시글과 관련된 페이지들입니다. 인덱스 페이지인 게시글 목록, 게시글 작성 및 수정 그리고 게시글에 대한 내용을 조회하는 게시글 조회 페이지로 이루어져 있습니다. 게시글 목록게시글 작성게시글 조회게시글 수정게시글 목록인덱스 페이지로 사용되는 게시글 목록 페이지입니다. 페이지 접근 시 기본적으로 일반 게시글 목록이 출력되며 탭을 통해 각 종류의 게시글 목록을 얻을 수 있습니다.스크롤을 내리게 되면 아래의 검색창이 나오게 됩니다. 검색의 경우 제목, 내용, 작성자, 제목 + 내용으로 검색이 가능하며 검색된 경우 게시글 목록 위의 텍스트가 Search Post로 변경됩니다.페이징의..

[NeetCode-LeetCode] House Robber II JAVA

[NeetCode-LeetCode] House Robber II - Medium접근dp풀이바로 전에 풀었던 집 터는 문제 2편이다. 연속된 집을 털 수 없는 규칙은 동일하나 이번엔 집이 원형으로 이루어져 있다는 점이다. 전 문제는 집이 직선 형태로 이루어져 있기 때문에 연속된 집만 털지 않고 처음부터 끝까지 진행하면 되었으나 이번에는 원형으로 첫 집과 마지막집이 연결되어 있기 때문에 해당 부분을 고려해야 한다.  원형으로 집이 연결되어 있다지만 첫 번째 집과 마지막 집만 연결되어 있는 거 기 때문에 특별히 추가로 신경 쓸 내용은 많지 않다. 첫 번째 집을 턴다면 마지막 집을 털지 않으면 되는 것이고 마지막 집을 턴다면 첫 번째 집을 털지 않으면 되는 것이기 때문이다. 이렇게 두 가지 케이스로 나눠서 이 ..

[NeetCode-LeetCode] House Robber JAVA

[NeetCode-LeetCode] House Robber - Medium접근dp풀이집을 약탈하여 최대한 많은 돈을 모으는 문제로 배열엔 집에서 약탈할 수 있는 돈의 금액이 들어있다. 조건으로 집을 연속하여 터는 경우 경보가 울려 경찰이 오기 때문에 연속되게 약탈을 할 수는 없다. dp를 사용하면 해결되는 문제이다. public int rob(int[] nums) { if (nums.length == 0) { return 0; } if (nums.length == 1) { return nums[0]; } int[] dp = new int[nums.length]; dp[0] = nums[..

[TOY] 개발 - 프론트엔드(User, Admin)

이전 진행 상황admin 관련 기능 추가도커 의존성 추가ts 컴파일 추가기타 수정프론트엔드에 대한 지식이 부족하여 생성형 AI를 사용해 코드를 생성하고 다듬었습니다. 기존 bootstrap을 사용하여 간단하게 진행하려던 계획에서 figma를 통해 페이지를 디자인 한 김에 해당 디자인을 토대로 생성형 AI에게 코드를 생성하여 진행하였습니다. 코드들에 대한 깊은 지식은 부족하다고 생각되어 코드보다는 완성된 화면과 thymeleaf가 적용된 html 파일 위주로 작성하였습니다. 내용이 많아 공통부분과 user, admin에 대한 부분과 post에 대한 부분으로 문서를 나눴습니다.commonuserCommon대부분의 페이지에 삽입될 헤더와 푸터입니다. 프래그먼트 형태로 layout에 삽입되어 모든 페이지에 사용..

[TOY] 개발 - 수정

이전 진행 상황통합 테스트 개발PostApiController 추가기타 수정프론트엔드 개발로 인한 수정된 부분을 위한 문서입니다. 개발된 프론트엔드 관련 코드는 따로 업로드될 예정이며 서버 측 코드의 수정을 주 내용으로 다루고 있습니다.userpostcommentglobalUser프론트엔드 개발이 이루어지면서 Api 컨트롤러가 추가되고 시큐리티 관련과 서버 측 코드 수정도 많이 이루어졌습니다. admin 관련 기능이 개발되었습니다. 변경 사항UserController 수정UserFormController 수정WebSecurityConfig 수정LoginSuccessHandler  수정UserDTO 수정UserService 수정User 수정UserRepository 수정추가 사항UserApiControll..

[NeetCode-LeetCode] Pacific Atlantic Water Flow JAVA

[NeetCode-LeetCode] Pacific Atlantic Water Flow - Medium접근bfsdfs풀이태평양과 대서양으로 물이 흘러갈 수 있는지 확인하는 문제이다. 문제를 읽었을 때 이해가 빠르게 되는 문제는 아니었다. 좌표에는 물의 깊이 값이 들어있고 특정 좌표에서 물은 상하좌우로 흐를 수 있고 좌표의 다음 칸이 기존 좌표의 값과 동일하거나 더 작아야 흘러갈 수 있다는 그런 내용인 거 같았다. 결론은 특정 좌표에 물이 두 바다에 모두 도달이 가능한 지 체크하는 문제인 것 같았다.  그렇다면 양쪽 바다에서 시작해 모든 좌표를 체크하고 도달 가능한 두 좌표가 겹치는 부분을 찾으면 될 것이다.  private static final int[] dx = {-1, 1, 0, 0}; p..

[NeetCode-LeetCode] Design Add and Search Words Data Structure JAVA

[NeetCode-LeetCode] Design Add and Search Words Data Structure - Medium 접근접근 방법풀이단어 추가와 검색을 가능이 가능한 데이터 구조를 디자인하는 문제이다. 단어 추가의 경우 입력받는 단어를 데이터 구조 내 저장하는 로직을 수행하고 검색의 경우 데이터 구조 검색하고자 하는 단어가 저장되어 있는지 확인하는 로직이다. trie 파트에 있는 문제로 trie를 사용하여 풀어야 하는 문제로 전에 풀었던 문제는 검색 단어가 그대로 주어졌기 때문에 특별히 신경 쓸 부분이 없었지만 이번에는 "." 점의 형태로 패턴 매칭을 수행해야 하기 때문에 좀 더 복잡해졌다고 볼 수 있다. 기존 삽입 부분과 베이스는 이전에 풀었던 코드를 그대로 들고왔다. class Node ..

[NeetCode-LeetCode] Subtree of Another Tree JAVA

[NeetCode-LeetCode] Subtree of Another Tree - Easy접근재귀풀이어떤 트리 내부에 동일한 서브트리가 존재하는지 검사하는 문제이다. 정확하게 주어진 서브트리와 일치해야 한다 즉 기존 트리 내부에 서브트리와 동일한 부분이 존재하지만 밑에 추가로 자식 노드가 존재하거나 하는 경우엔 동일한 서브트리라 볼 수 없다. 위와 같은 형태에 왼쪽 트리에 4, 1, 2라는 동일한 구조가 있는데 2 노드 밑에 0이라는 자식 노드가 있기 때문에 다른 서브트리라 판단하고 false가 된다.  public boolean isSubtree(TreeNode root, TreeNode subRoot) { if (root == null) { return false..

728x90