피라미드를 만들 때 각 행에 따른 공백의 개수와 피라미드로 찍힐 별의 개수를 파악하는 것이 중요하다. i번째 행에서 별의 개수는 2 \* i + 1의 등차 수열을 따르고, i번째 행에서 공백의 개수는 높이 (heignt) - i 개이다. 공백과 별 숫자에 대한 파악이
증가하는 부분과 감소하는 부분을 나누기 위해서 전체 높이를 나누기 2 한 pivot 값이 필요하다. pivot을 기준으로 피라미드 모양과 역피라미드 모양이 합쳐져 있다고 생각하면 된다.피라미드 모양에서 공백은 3 → 2 → 1 순서로 공차가 1이고 첫째항이 pivot이
클래스의 멤버 변수는 대부분 private으로 선언하게 된다. 오브젝트의 멤버 변수에 직접 접근하는 방법을 피하고 보안을 강화하기 위함이다. 따라서 이럴 경우 생성자를 통해 초기화하고 Getter라는 메소드를 통해 값을 읽어들이고, Setter라는 메소드를 통해 재설정
위 Codeup 1308 의 경우 I 999 백두산을 Student라는 객체로 저장해서 문제를 풀이한다. 이런 과정을 parsing이라고 한다. ParsingString type으로 되어 있는 데이터를 자바의 Object type으로 바꿔 만드는 행위이다. 이렇게 파싱
Bubble Sort서로 인접한 두 원소를 검사하여 정렬하는 알고리즘으로 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다. 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런
Insertion Sort손안의 카드를 정렬하는 방법과 유사하다. 새로운 카드를 기존의 정렬된 카드 사이의 올바른 자리를 찾아 삽입하는 방식이다. 새로 삽입될 카드의 수만큼 반복하게 되면 전체 카드의 정렬이 완성된다. 자료 배열의 모든 요소를 앞에서부터 차례대로 이미
StackStack은 후입선출(LIFO, Last-In-First-Out) 원칙에 따라 동작하는 선형 자료구조다. 스택은 데이터의 삽입과 삭제가 한쪽 끝에서만 이루어지는 제한적인 구조를 갖고 있다. 스택은 일상 생활에서 쌓인 책 더미나 접시를 생각할 수 있다. 가장 마
괄호 풀기문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')
HTMLHypertext Markup Language는 프로그래밍 언어는 아니고, 우리가 보는 웹페이지가 어떻게 구조화되어 있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어이다. 이는 개발자로 하여금 복잡하게도 간단하게도 프로그래밍 할 수 있다. HTML은 el
JavaScript는 HTML 안에 코드를 쓸 수 있고, js 파일로 따로 빼서 작성할 수 있다. 보통 내용이 많은 경우 js 파일로 따로 빼서 작성하는 것이 코드 가독성이 좋아 선호되지만, 간단한 문법 같은 경우는 HTML 안에서 묶어 작성하기도 한다. HTML 안
UserDao를 N사, D사 연결에 따라 다르게 구현해야 할 수도 있다. 따라서 이 경우를 대비해 UserDao를 abstact class로 만들고, 추상 클래스를 extends한 구현체들을 생성한다. 이해를 돕기 위해 기존의 getConnection을 NUserDao
Abstract Class추상 클래스는 하나 이상의 추상 메소드를 포함하는 클래스이다. 추상 메소드란 메소드 선언만 있고 구현이 없는 메소드로, 구현은 상속받은 클래스에서 진행한다. 추상 클래스는 직접적으로 인스턴스화할 수 없고 상속을 통해서만 사용한다. 추상 클래스는
컴퓨터도 마찬가지로 0과 1의 조합으로 사용자의 모든 행동을 이해한다. 컴퓨터에서는 주로 CPU가 그 역할을 도맡아서 진행한다. CPU는 컴퓨터에서 특정한 전기 신호를 입력받아 연산을 한다. 이 전기 신호는 0과 1로 이뤄져 있으며, 그 조합에 따라 덧셈을 하거나, 뺄
\[start.spring.io](http://start.spring.io) 로 돌아가서 보면, 어제는 넘어갔던 설정 중 Project 와 Project Metadata 를 살펴보자.이 Project 영역에는 세가지 선택지가 있는데, 크게 Gradle과 Mav
Bubble Sort는 인접한 두 자료를 비교하며 자리를 교환하는 방식이다. 첫 번째 원소와 두 번째 원소를 비교해 첫 번째 원소가 두 번째 원소보다 크다면, 둘의 자리를 교환한다. 두 번째 원소와 세 번째 원소도 동일하게 비교하고 교환한다. 이를 마지막 두 원소까지
데이터베이스에는 테이블이 있고, 테이블은 각각 로우를 가진다. 로우는 하나의 기록으로 사용된다. 이때 하나의 레코드를 식별하는 칼럼을 Primary Key라고 한다. 한 명의 Student를 읽어 오려면 먼저 PK로 어떤 Student를 읽어 올 것인지부터 결정해야 한
테킷 9주 1일차
MyBatis를 이용해 JDBC를 사용해 보기
Bean 객체에 대한 설명과 JPA 입문
JPA로 CRUD 다시 연습해 보기
탐색 작업을 효율적으로 하기 위한 자료 구조이다. 모든 노드의 데이터가 서로 다른 이진 트리이다. 만약 어느 노드에게 자식이 있는 경우, 왼쪽 자식의 데이터는 부모보다 작고 오른쪽 자식의 데이터는 부모보다 크다. 중위 순회를 하게 되면 왼쪽 → 루트 → 오른쪽 순서기
파일을 서버로 업로드하는 과정과 예외 클래스 공부
Graph를 행렬과 리스트로 구현해 보고 Spring에서 Validation을 위한 Annotation 만들기
최소신장트리와 크루스칼 알고리즘 + 관점 지향 프로그래밍
최소 신장 트리를 구하는 알고리즘과 테스트 코드 작성법
Logging과 Profiles 작성
Greedy 알고리즘과 Interface 기반 Dependency Injection
다익스트라 알고리즘과 Spring Security를 이용한 로그인 기능
Recursive와 Iterative 그리고 Spring Security로 보는 JWT
Divided Conquer 문제와 Spring Security Filter Chain의 이해
Divided Conquer 알고리즘과 Quick Sort & Binary Search 그리고 Naver & Kakao 소셜 로그인
Heap 자료 구조와 Message Broker
WebSocket을 이용한 Chatting
Priority Queue를 활용한 Dijkstra Algorithm과 Gateway Filter + Naver Cloud Platform
Topological Sort와 RDS로 MySQL 이용하기
Backtracking Algorithm과 JPA에서 OneToMany, ManyToMany 관계 설정
Dynamic Programming과 Database Querysdl
TDD와 BOJ 알고리즘 풀이
javaScript
Elastic Beanstalk을 사용하여 Github Action으로 CI/CD 하기
@RedisHash vs HashOperations, @PostConstruct, RedisTemplate, ConcurrentHashMap
회의록