전체 글

삼시세끼 잔잔하게 개발하는 프로그래밍 수련기 : Spring boot, Algorithm, Android
· Spring boot
상황 로컬에서 실행 시에는 잘 실행됨 배포하니 jenkins로 자동 빌드되는 과정에서 빌드 fail됨 빌드 시 테스트 코드가 실패했다고 확인됨 파악 로컬에서 ./gradlew clean build 로 빌드해보니 에러 발생 (-> 항상 배포 전 미리 빌드해보고 올렸어야 함) 여기서 보이는 로그로는 해결하기 부족해서 ./gradlew test -i 로 테스트 시 발생하는 에러 로그 전체 출력해봄 역시나 안보이던 로그에 쉬운 단서가 있었음! 테스트코드 실행 시 어떤 repository 빈을 못찾았다고 되어있었는데 @WebMvcTest 어노테이션에 특정 컨트롤러를 지정하지 않고 사용했더니 모든 컨트롤러를 다 로드하느라 모든 컨트롤러에서 사용하는 빈을 찾아 넣으려고 했나봄 해결 @WebMvcTest 에 이 테스트..
· Spring boot
문제 소켓을 연결해서 web socket 통신 중인 클라이언트가 http 로도 해결 가능한 요청을 할 일이 생기는 경우 (실시간, 양방향 필요없음) 이 요청은 이미 연결되어있는 소켓을 사용해서 ws로 설계하는 게 맞을까? 아니면 http 로 설계하는 게 맞을까? 결론 : http 로 설계하는 것이 좋다 소켓으로도 가능은 하지만 http로 하는 이유는 필요가 없음 : web socket 의 용도는 실시간성 데이터를 받기 위한 것인데 해당 api는 실시간 통신이 필요하지 않은 것이므로 코드 재사용성과 모듈화, 유지보수성 : 나중에 그 api가 다른 곳에서 사용될 수도 있음. 따라서 기능의 성격에 맞게 설계하는 것이 더 적절함 서버 부담에 대해 : 이런 상황이라면 부담만 본다면 웹소켓 통신을 하는 게 부담이 ..
· Git
맨날 까먹어서 적어두는 글 1. 깃허브에서 원격 레포랑 액세스 토큰 만들어 온 후 2. 로컬 레포에서 아래 명령어 실행 git init git add . git config user.email git config user.name git commit -m "Init : First commit. Make Project" git branch -M main // master브랜치를 main으로 이름 변경 git branch git remote add origin "https://@github.com//.git" git push origin main git checkout git push origin
https://leetcode.com/problems/search-a-2d-matrix-ii/ Search a 2D Matrix II - 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 Think 정렬된 mXn행렬과 target값이 주어지고, 행렬에서 target값이 존재하는지 T/F를 구하는 문제 행렬은 왼->오, 위->아래 방향으로 오름차순 정렬되어있음 존재하면 true 리턴 이진 검색 문제처럼 보이지만 이진 검색 보다는 다른 탐색을 사용하여 풀이해야 함 1...
https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/ Two Sum II - Input Array Is Sorted - 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 Think 정렬된 배열과 타겟 수가 주어지고, 배열에서 어떤 두 수를 더해야 타겟 수를 만들 수 있는지 두 수의 인덱스를 구하는 문제 주의할 점은 인덱스를 1부터 시작하는 것으로 셀 것. 주어지는 배열이 정렬되어 있으므로 투 포인터 기법으..
https://leetcode.com/problems/sort-list/ Sort List - 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 Think 주어진 연결리스트를 정렬하는 문제 파이썬 내장함수를 사용해 풀이 연결리스트 -> 리스트로 만들어서 sort -> 연결리스트 (이외에 병합정렬로 풀이할 수도 있다. 코테 면접 등 설명이 필요할 때에는 내장함수를 사용하지 않는 방법을 써야 함) Solution # Definition for singly-linked ..
이진 탐색 트리(BST) 노드 간 최소 거리 https://leetcode.com/problems/minimum-distance-between-bst-nodes/ Minimum Distance Between BST Nodes - 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 Think 값들이 BST형태로 주어지고, 노드들 중 가장 작은 값 차이를 출력하는 문제 트리에서 현재 노드와 값 차이가 가장 적은 노드는 딱 두 개 중 하나이다. 두 개가 어느것인지는 그림으..
정렬된 배열의 이진 탐색 트리 변환 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Convert Sorted Array to Binary Search Tree - 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 Think BST의 원리를 이해한다면 쉽게 풀 수 있는 문제였다! (기억이 잘 안나서 BST 개념이랑 특징 따로 읽어봤음) 주어지는 배열도 정렬된 배열이라 간단했다~ So..
Think https://www.youtube.com/watch?v=XEmy13g1Qxc k번째 큰 수를 찾는 문제. 자연스럽게 정렬을 생각하게 되는데, 위 영상에서 그냥 정렬을 하면 O(nlogn)의 시간이 들지만 힙으로 만들면 정렬 시간을 O(n) 으로 줄일 수 있다고 한다. 대신 힙으로 만들어서 제일 큰 수부터 하나씩 꺼낼 경우, 꺼낼 때마다 logn 의 시간이 든다. 따라서 k번째 큰 수를 찾으려면 n+klogn 의 시간이 들게 된다. 이는 대체적으로 nlogn보다 좋은 값이지만, k값에 따라서 더 오래 걸리는 경우도 있다. 평균적으로 보았을 때에는 더 좋은 값이라고 할 수 있다. 파이썬의 heapq모듈을 활용한다. heapq모듈은 최소힙이므로, 음수로 바꾸어서 힙에 저장한 다음 가장 작은 수부터..
· Git
작업하다가 실수로 다른 팀원의 파일을 건드려서 변경한 내용을 없던 일로 하고 싶을 수 있다 변경된 파일 목록을 확인하고 변경을 취소하고 원래대로 되돌려보자 #변경된 파일 목록 확인 git status #변경 취소하고 원래대로 되돌리기 git restore [파일명] git status를 통해 원하는 파일의 경로+파일명 전체를 복사해서 git restore 명령어와 함께 사용하면 된다. 다시 git status를 해보면 해당 파일이 목록에 보이지 않을 거다!
https://leetcode.com/problems/balanced-binary-tree/ Balanced Binary Tree - 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 Think 재귀로 풀 수 있는 문제 이진트리의 균형은 효율면에서 중요한 부분이라고 한다. Solution # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None..
https://leetcode.com/problems/maximum-depth-of-binary-tree/ Maximum Depth of Binary Tree - 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 Think 책대로 스택을 사용하는 BFS 반복구조로 풀이해보자! 파이썬의 큐 자료형보다는 데크를 쓰는 게 성능이 좋다. Solution # Definition for a binary tree node. # class TreeNode(object): # de..
· DB
문제 상황 잘 작업하던 프로젝트 MySQL WorkBench로 AWS RDS로 올려둔 DB 에 접속하려고 했는데 갑자기 아래와 같은 창을 마주했다 포스트맨으로 보낸 DB사용하는 요청은 잘 되는 걸 보니 RDS 서버에는 문제가 없는 것 같았다 원인 & 해결 생각해보니 작업하는 장소와 사용하는 와이파이가 바뀌었다. IP주소가 바뀌었을 것이다. 참고로 와이파이는 같은 와이파이라도 껐다 켜기만 해도 IP주소가 바뀌는 경우가 있다. 보안그룹에 가서 RDS의 보안그룹에 내 IP를 추가해줬다. (하는 김에 EC2 보안그룹도 수정했다) RDS 보안그룹을 누르고 위에 있던 인바운드 규칙과 동일하게 하나 더 만들고 내 현재 IP를 추가해줬다. 저장~ 다시 접속해본다 잘됨~
https://leetcode.com/problems/subsets/ Subsets - 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 Think dfs 탐색 과정의 모든 걸 저장하면 됨 Solution class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ def dfs(index, path) : # 매번 결과에 추가함. 그래프 끝까지..
https://leetcode.com/problems/combinations/ Combinations - 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 Think 이번에도 영상을 보자..~ https://www.youtube.com/watch?v=q0s6m7AiM7o Solution 1. 파이썬 답게,, 라이브러리를 사용하는 풀이 class Solution(object): def combine(self, n, k): """ :type n: int :type k:..
돌래씨
삼시세코