본문 바로가기

전체 글

(164)
[LeetCode] Python - 102. Binary Tree Level Order Traversal https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal - 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 생각 이진 트리를 BFS 방식으로 탐색하는 문제입니다. 파이썬에서 BFS와 같이 큐를 사용해야할때 deque 자료구조를 사용하여 풀었습니다. deque는 스택과 큐가 합쳐진 자료구조인데, pop 연산의 시간복잡도가 O(1) 이어서 코딩테스..
[LeetCode] Python - 230. Kth Smallest Element in a BST https://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는 왼쪽 자식노드는 루트노드보다 작고, 오른쪽 자식노드는 루트노드보다 큰 노드들로 이루어진 트리입니다. (일반화하면, 왼쪽 서브트리 루트 노드 -> 오른쪽 ..
IoC 컨테이너와 빈 학습목표 IoC 컨테이너란? 빈이란? 스프링 IoC 컨테이너 IoC란 Inversion of Control 으로 Spring에서 나온 용어가 아닙니다. IoC는 프로그램의 제어권을 누가 가져갈것인지에 대한 프로그래밍 패턴이다. 스프링 프레임워크에서의 IoC는 프로그램의 제어권을 프레임워크가 제어하기 때문에, 객체를 생성하고 관계를 설정하는 객체의 관리 역할이 개발자로부터 스프링 컨테이너에게 역전된다는 뜻으로 사용된다. 스프링이 제공하는 IoC 컨테이너를 사용하는 이유는 여러 장점이 있기 때문이다. 먼저 좋은 객체 지향 프로그래밍이란 역할과 구현을 나누는 것이다. 즉, 구현체에 의존하지말고 역할에 의존해야 하는것이다. 역할과 구현을 분리함으로써, 구현 대상의 내부 구조를 알 필요가 없고, 구현 대상 자체를..
[LeetCode] Python - 202. Happy Number https://leetcode.com/problems/happy-number/ Happy Number - 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 생각 leetcode에서 같은 easy라도 난이도가 천차만별인것같다. 근데 이 문제는 가볍게 풀려서 정말 행복한 문제 주어진 예시에서 n=19일때를 모두 손으로 써보면 1이 되므로 True임을 알 수 있다. 그렇다면, 언제 False가 되는지를 알아야 한다. n=2 일때를 계속 써보면 2, 4 , 16 , 37,..
SSAFY 친구들과 함께 한 TDD 스터디 후기 느낀점 주어진 미션을 하나씩 수행하면서 코드 리뷰를 통해 객체 지향의 장점에 대해 정말 체감할 수 있었던 스터디였습니다. 가장 처음으로 진행한 문자열 테스트 미션에서도 싱글톤에 대한 개념에 대해 깊이 있게 학습하면서 TDD 스터디이지만 Java와 더 친해진것같은 스터디였습니다. 이 과정에서 객체 지향 생활 체조 원칙, ENUM, Optional 을 필수적으로 사용해야 하는 이유, OCP 적용하기, 전략 패턴, 일급 컬렉션에 대해 학습할 수 있었습니다. (스터디를 진행하면서 저만의 용어로 Notion에 정리를 해놓아서.. 포스팅을 못하고 있습니다ㅎㅎ 차근차근 블로그에 포스팅 할 계획입니다!) 처음부터 완벽한 코드를 짤 수 없기에, 실패하는 테스트 코드를 작성하고 차근차근 리팩토링을 진행하면서 더 나은 메소..
[LeetCode] Python - 289. Game of Life https://leetcode.com/problems/game-of-life/ Game of Life - 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 생각 주어진 4개의 규칙을 차근차근 적용시키면 되는 문제입니다. 1. 살아있는 세포에 살아있는 이웃이 2개 미만 : 죽는다 2. 살아있는 세포에 살아 있는 이웃 2,3개 : 다음세대에 살아있다 3. 살아있는 세포에 살아있는 이웃 > 3 : 죽는다 4. 죽어있는 세포에 살아 있는 이웃이 3개면 : 다음 세대에 살아..
SSAFY 5기 1학기 수료증 + SSAFY 명찰 받은 후기 1학기 동안 정신없이 바빴는데 벌써 2학기가 시작되었습니다ㅎㅎ 그래서 SSAFY에서 2학기 프로젝트에 쓸 노트북을 배송해줬네요 택배에 1학기 수료증과 함께 SSAFY 명찰이 들어있었는데 시작한지 6개월이 지나고 이제서야 보는 명찰!! ㅋㅋㅋㅋㅋㅋ SSAFY 5기는 보라색~~ 마음에 들어요~~ 2학기도 열심히 해보겠습니다~ 화이팅!!
Spring Boot를 Docker 이미지를 통해서 AWS EC2에 배포하기 용어 정리 도커 이미지 : 프로그램, 라이브러리, 소스 등을 설치한뒤에 이를 파일로 만든 것. 도커 컨테이너 : 이미지가 실행된 상태. 이미지를 여러 번 실행시키면 여러개의 컨테이너가 만들어진다. OS로 보면 이미지는 일종의 실행파일, 컨테이너는 프로세스와 유사한 개념이다. 1. Dockerfile 생성 Docker 이미지가 어떤 단계를 거쳐 빌드되야 하는지를 담고있는 파일입니다. Docker는 이 Dockerfile을 차례대로 수행하여 이미지를 생성합니다 FROM : base이미지를 지정해줍니다. openjdk java 8 버전의 환경을 구성한다. (base 이미지는 일반적으로 Docker Hub와 같은 Docker repository에 올려놓은 공개 이미지인 경우가 많습니다) ARG : docker ..