인프런 워밍업 클럽 백엔드 스터디 2기 | 2주차 발자국과 중도하차 회고
박우빈 님의 Readable Code: 읽기 좋은 코드를 작성하는 사고법 을 듣고 작성한 게시글입니다. KPT Keep: 앞으로 지속하고 싶은 부분 🌿 인프런 노트 전부 기록하는 것보다 인프런 노트를 활용하는게 확실히 더 빠르게 정리할 수 있었다. 그림 자료 같은 건 체크만 해 놓으면 나중에 다시 확인할 수 있어서 좋은 것 같다....
박우빈 님의 Readable Code: 읽기 좋은 코드를 작성하는 사고법 을 듣고 작성한 게시글입니다. KPT Keep: 앞으로 지속하고 싶은 부분 🌿 인프런 노트 전부 기록하는 것보다 인프런 노트를 활용하는게 확실히 더 빠르게 정리할 수 있었다. 그림 자료 같은 건 체크만 해 놓으면 나중에 다시 확인할 수 있어서 좋은 것 같다....
박우빈 님의 Readable Code: 읽기 좋은 코드를 작성하는 사고법 을 듣고 작성한 게시글입니다. 강의 수강 내용 요약 강의에서 사용되는 용어들 🔑 도메인(domain) 해결하고자 하는 문제 영역 ex) 결제 도메인, 주문 도메인, 상품 도메인… 🔑 도메인 지식 도메인을 이...
Object 클래스 김영한의 실전 자바 중급 1편을 보며 정리해보는 Object 클래스 자바가 기본으로 제공하는 라이브러리 중 가장 기본이 되는 것이 java.lang 패키지이다. java.lang 패키지는 모든 자바 애플리케이션에 자동으로 import된다. 대표적인 클래스로는 다음과 같은 클래스들이 있다. Object: 모든 자바 객...
상속 김영한의 실전 자바 기본편을 보며 정리해보는 상속 상속이란 주로 부모 자식 간의 관계로 많이 비유된다. 이목구비의 생김새나 어떤 행동 양식이 비슷하게 보이는 것은 우리가 부모님에게 같은 유전자를 물려받았기 때문이다. 이렇게 부모로부터 무언가를 물려받는 것을 상속이라고 한다. 우리는 이렇게 물려받은 유전자를 베이스로 커가면서 겪는 ...
final 김영한의 실전 자바 기본편을 보며 정리해보는 final final은 말 그대로 끝이라는 뜻이다. 변수나 클래스, 메서드에 final이 붙으면 더는 값을 변경할 수 없다. 오늘은 final에 대해 알아보고, 값을 변경할 수 없게 만들면 얻게 되는 이점을 알아보자. final - 지역 변수 final을 지역 변수에 설정할 경우...
자바 메모리 구조와 static 알아보기 김영한의 실전 자바 기본편을 보며 정리해보는 자바의 메모리 구조와 static public static void main(String[] args) { } 위와 같은 메인 메서드는 자바 프로그램을 실행할 때 반드시 필요하다. 그런데 생각해보자. 우리는 지금까지 메서드를 사용하기 위해 클래스의 인스턴...
접근 제어자 김영한의 실전 자바 기본편을 보며 정리해보는 자바의 접근 제어자 접근 제어자란 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한하는 것을 뜻한다. 아마 객체지향 언어를 한 번이라도 본 적이 있다면 public이나 private 키워드가 낯이 익을 것이다. 이런 키워드가 바로 접근 제어자, 혹은 접근 제한자...
생성자 김영한의 실전 자바 기본편을 보며 정리해보는 자바의 생성자 개념 생성자란? 객체를 생성하는 시점에 즉시 필요한 기능을 수행할 수 있게 하는 기능 생성자가 필요한 이유 객체를 생성하고 나면 변수에 초기값을 설정해주어야 한다. 객체를 생성할 때마다 이렇게 초기값을 설정하는 부분이 계속 반복되게 된다. Member m...
기본형과 참조형 김영한의 실전 자바 기본편을 보며 정리해보는 자바의 기본형과 참조형 자바의 변수 데이터 타입은 크게 사용하는 값을 변수에 직접 넣을 수 있는 기본형, 객체가 저장된 메모리의 위치를 가리키는 참조값을 넣을 수 있는 참조형으로 분류할 수 있다. 자바에서 참조형을 제대로 이해하는 것은 C언어의 포인터를 이해하는 것 만큼 중요하다...
클래스와 객체 김영한의 실전 자바 기본편을 보며 정리해보는 자바의 클래스와 객체 개념 클래스와 객체 개념을 설명할 때 어김없이 나오는 붕어빵과 붕어빵 틀! 오늘은 왜 다들 클래스를 붕어빵 틀에 비유하고, 붕어빵을 객체에 비유하는지 붕어빵을 잔뜩 만들어 보며 자세히 알아보도록 하자. ⚠️ 붕어빵과 붕어빵 틀은 엄밀히 말하면 정확한 비유가...
신입 개발자 첫 기술 면접 회고 면접 장렬하게 말아먹고 하루 종일 이불 차다가 남겨보는 후기 처음 서류 합격 소식은 문자로 받았다. 평소 스팸 문자 말곤 문자 날아올 일이 없는데.. 아무 생각 없는 상태에서 받은 거라 진짜 얼떨떨했다. 서류 합격 고지를 받고 이틀 후 쯤 코딩 테스트가 예정되어 있었다. 최근에는 개인 프로젝트 개발 한다...
Open-Close Principle 💡 확장에 대해 열려 있어야 하고, 변경에 대해서는 닫혀 있어야 한다는 원칙 좋은 객체지향 프로그래밍의 5대 원칙 중 하나인 개방-폐쇄 원칙(OCP; Open-Closed Principle)은 소프트웨어 개체는 확장에 대해 열려 있어야 하고, 변경에 대해서는 닫혀 있어야 한다는 원칙이다. 좀 더 자세히...
지난 포스팅에 다형성의 주요 개념 2가지인 다형적 참조와 메서드 오버라이딩에 대해 정리했다. 이번에는 객체지향 프로그래밍에서 다형성이 어떻게 사용되는지 살펴보고, 다형성의 필요성에 대해 알아보면서 추상 클래스와 인터페이스까지 정리 해보려고 한다. 해당 포스팅은 김영한의 실전 자바 기본편을 보고 작성되었다. 다형성의 활용 Dog과 Cat 클래스...
문제 Leetcode - Top K Frequent Elements 문제를 보고 풀이한 내용이다. Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order. Example 1: ...
문제 Leetcode - Minimum Suffix Flips 문제를 보고 풀이한 내용이다. You are given a 0-indexed binary string target of length n. You have another binary string s of length n that is initially set to all zero...
문제 Leetcode - Iterator for Combination 문제를 보고 풀이한 내용이다. Design the CombinationIterator class: CombinationIterator(string characters, int combinationLength) Initializes the object with a ...
문제 Leetcode - Group the People Given the Group Size They Belong To 문제를 보고 풀이한 내용이다. There are n people that are split into some unknown number of groups. Each person is labeled with a unique...
문제 Leetcode - Find The Original Array of Prefix Xor 문제를 보고 풀이한 내용이다. You are given an integer array pref of size n. Find and return the array arr of size n that satisfies: pref[i] = arr[0] ...
문제 Leetcode - Subrectangle Queries 문제를 보고 풀이한 내용이다. Implement the class SubrectangleQueries which receives a rows x cols rectangle as a matrix of integers in the constructor and supports two...
문제 프로그래머스 - 순위 문제를 보고 풀이한 내용이다. n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇...
김영한의 실전 자바 중급 2편을 수강하면서 List 컬렉션에 대해 살펴보려던 중, List가 다형성과 OCP 원칙을 잘 적용한 예라는 설명을 듣게 되었다. 다형성의 개념에 대해 막연하게만 알고 있던 차라 List의 장점이나 설명이 와닿지 않을 것 같아서 이 참에 먼저 다형성에 대해 정리해보기로 했다. 객체 지향 프로그래밍과 다형성 객체 지향 프...
문제 프로그래머스 - 가장 먼 노드 문제를 보고 풀이한 내용이다. n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대...
문제 Leetcode - Capacity To Ship Packages Within D Days 문제를 보고 풀이한 내용이다. A conveyor belt has packages that must be shipped from one port to another within days days. The ith package on the co...
문제 프로그래머스 - 입국 심사 문제를 보고 풀이한 내용이다. n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받...
문제 Leetcode - Square Submatrics with All Ones 문제를 보고 풀이한 내용이다. Given a m * n matrix of ones and zeros, return how many square submatrices have all ones. Example 1: Input: matrix = [ [0,1...
문제 Leetcode - Count Sorted Vowel Strings 문제를 보고 풀이한 내용이다. Given an integer array arr, partition the array into (contiguous) subarrays of length at most k. After partitioning, each subarray h...
문제 Leetcode - Count Sorted Vowel Strings 문제를 보고 풀이한 내용이다. Given an integer n, return the number of strings of length n that consist only of vowels (a, e, i, o, u) and are lexicographically s...
프로젝트 환경설정 프로젝트는 스프링 부트를 활용해 생성했다. Project: Gradle - Groovy Language: Java Spring Boot: 3.3.0 Packaging: Jar Java: 21 Dependencies Spring Web 웹 애플리케이션을 구축하기 위한 기능을 제공한다. 주로 Spring MVC(Mod...
문제 Leetcode - All Possible Full Binary Trees 문제를 보고 풀이한 내용이다. Given an integer n, return a list of all possible full binary trees with n nodes. Each node of each tree in the answer must have...
문제 프로그래머스 - 구명보트 문제를 보고 풀이한 내용이다. 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 ...
문제 프로그래머스 - 조이스틱 문제를 보고 풀이한 내용이다. 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ -...
문제 Leetcode - Reverse Odd Levels of Binary Tree 문제를 보고 풀이한 내용이다. Given the root of a perfect binary tree, reverse the node values at each odd level of the tree. For example, suppose the ...
문제 Leetcode - All Paths From Source to Target 문제를 보고 풀이한 내용이다. Given a directed acyclic graph (DAG) of n nodes labeled from 0 to n - 1, find all possible paths from node 0 to node n - 1 and ...
문제 Leetcode - Deepest Leaves Sum 문제를 보고 풀이한 내용이다. Given the root of a binary tree, return the sum of values of its deepest leaves. Example 1: Input: root = [1,2,3,4,5,null,6,7,null,null,...
문제 프로그래머스 - 게임 맵 최단 거리 문제를 보고 풀이한 내용이다. ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당...
문제 프로그래머스 - 타겟 넘버 문제를 보고 풀이한 내용이다. n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1...
문제 프로그래머스 - 소수 찾기 문제를 보고 풀이한 내용이다. 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution ...
문제 프로그래머스 - 카펫 문제를 보고 풀이한 내용이다. Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. ...
문제 프로그래머스 - H-Index 문제를 보고 풀이한 내용이다. H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머...
문제 프로그래머스 - 가장 큰 수 문제를 보고 풀이한 내용이다. 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 ...
문제 You have a set which contains all positive integers [1, 2, 3, 4, 5, ...]. Implement the SmallestInfiniteSet class: SmallestInfiniteSet() Initializes the SmallestInfiniteSet object to cont...
힙(Heap) 우선순위 큐(PriorityQueue) 문제 풀이 프로그래머스 코딩테스트 연습 - 더 맵게문제를 풀어보자. 문제 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으...
프로그래머스 코딩테스트 연습 - 올바른 괄호문제를 보고 풀이한 내용이다. 문제 괄호가 바르게 짝지어졌다는 것은 ‘(‘ 문자로 열렸으면 반드시 짝지어서 ‘)’ 문자로 닫혀야 한다는 뜻입니다. 예를 들어 “()()” 또는 “(())()” 는 올바른 괄호입니다. “)()(“ 또는 “(()(“ 는 올바르지 않은 괄호입니다. ’(‘ 또는 ‘)’ 로...
REST란? 월드 와이드 웹의 아키텍처 설계 및 개발을 안내하기 위해 만들어진 소프트웨어 아키텍처 스타일 분산형 인터넷 규모 하이퍼미디어 시스템의 아키텍처가 어떻게 작동해야 하는지에 대한 일련의 제약 조건을 정의 통일된 인터페이스, 구성 요소의 독립적 배포, 구성 요소 간의 상호 작용 확장성을 강조 캐싱을 촉진하여 사용자가 인식하...
JPA 로깅 설정하기 서버에서 데이터의 생성, 조회, 수정, 삭제 등을 요청하면 JPA의 리파지터리가 DB에 해당 요청을 전달한다. 요청을 받은 DB는 SQL로 쿼리를 작성해 테이블 속 데이터를 관리한다. 이제 내부에서 어떤 쿼리가 실행되는지 알아보기 위해 JPA 로깅 설정을 해보자. application.properties 파일에 다음과 같이...
데이터 삭제 과정 게시판에서 글을 삭제하는 과정은 다음 순서대로 이루어진다. 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청한다. 삭제 요청을 받은 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터를 찾아 삭제한다. (기존 데이터가 있는 경우) 삭제가 완료됐다면 클라이언트를 결과 페이지로 리다이렉트 한다. 데이터 삭제하기 ...
데이터 수정 과정 게시판에 작성한 글을 수정하려면 해당 글을 불러와 수정할 수 있는 상태로 만들고, 내용 입력 후 DB에 전송하면 최종적으로 수정되어야 한다. 수정 페이지 만들고 기존 데이터 불러오기 상세 페이지에서 수정 버튼 클릭 요청을 받은 컨트롤러가 해당 글의 id로 Db에서 데이터를 찾아 가져옴 ...
리다이렉트(Redirect)란? 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시하는 것 리다이렉트를 지시받은 클라이언트는 해당 주소로 다시 요청을 보내고 서버는 이에 대한 결과를 응답한다. 이를 통해 분리된 기능을 하나의 연속적인 흐름으로 연결할 수 있다. 링크와 리다이렉트를 이용해 페이지 연결하기 링크...
롬복(Lombok)이란? 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리 Getter, Setter, toString, constructor() 과 같은 코드를 자동완성 시킬 수 있다. 코드의 가독성을 향상시킨다. 코드 자동 생성을 통해 생산성을 향상시킨다. 빌더 패턴이나 로그 생성 등 다양한 방면으로도 활용할 수 있다....
데이터 조회 과정 웹 페이지에서 게시글을 등록하면 서버를 통해 DB에 저장된다. 이렇게 DB에 저장된 데이터를 웹 페이지에 출력하는 과정은 다음과 같다. 사용자가 데이터를 조회해 달라고 웹 페이지에서 URL 요청을 보낸다 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달한다. 리파지터리는 정보를 가지...
폼 데이터란? HTML 요소인 <form> 태그에 실려 전송되는 데이터, 웹 브라우저에서 서버로 데이터를 전송할 때 사용 form 태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받는다. 이 객체를 DTO(Data Transfer Object)라고 한다. DTO로 받은 데이터는 최종적으로 데이터베이스...
뷰 템플릿과 MVC 패턴 뷰 템플릿이란? 화면을 담당하는 기술로, 웹 페이지(View)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여주는 것 이 프로젝트에서는 프로젝트를 만들 때 사용한 Mustache라는 도구를 사용한다. 🧔🏻 Mustache? `` 형태로 손쉽게 사용할 수 있는 템플릿 ...
스프링 부트란? 자바 웹 프로그램을 더욱 쉽고 빠르게 만들기 위한 도구 자바 웹 프로그램을 만들기 위한 기능과 도구가 모여 있는 것 프랜차이즈에 가입해 레시피와 서비스 노하우를 제공받는 것처럼 더 쉽고 빠르게 자바 웹 프로그램 제작을 가능하게 해준다. Spring과 Spring Boot? Spring Boot는 Spring Fr...