Category

CodingTest

[김태원 알고리즘] 재귀함수와 스택🌟

최대 1 분 소요

재귀함수란 자기가 자기 자신을 반복하여 호출하는 함수이다. 이러한 특성을 이용해 “반복문”의 효과를 낼 수 있다. (알고리즘 문제 풀이에서 재귀함수는 반복문의 대체제로 볼 수 있다!) 아래 두 예제 비교해보자 예제 1 ```py def DFS(x): if x > 0: ...

맨 위로 이동 ↑

SpringCloud

[E-commerce App] 컨테이너 가상화 및 컨테이너 생성

2 분 소요

컨테이너 가상화 Virtualization 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공- 플랫폼 가상화- 리소스 가상화 하이퍼바이저 (Hypervisor)- Virtual Machine Manager (VMM)- 다수의 운영체제를 동시에...

[E-commerce App] Kafka 커맨드 정리 📍

최대 1 분 소요

1. 서버 기동 Zookeeper Server # 현재 위치: /Users/minju/study/msa/kafka-demo/kafka_2.13-2.7.0 $ ./bin/zookeeper-server-start.sh ./config/zookeeper.properties

[E-commerce App] Kafka Sink Connect 사용

2 분 소요

이전 글에서 source connect에서 topic에 데이터를 전달하면, topic에 해당 데이터가 쌓이는 것까지 확인했다. sink connect가 하는 역할은, topic에 전달된 데이터를 가져와서 사용하는 것이다. (Kafka-console-producer에서 데이터 전송 ...

[E-commerce App] Apache Kafka 사용(Kafka Connect)

3 분 소요

이 전 글에는 Kafka를 이용해 Producer와 Consumer를 사용해보았다. 이번에는 이어서 Kafka Connect를 사용해보자. 데이터베이스에 저장된 값을 또다른 데이터베이스에 이동하는 예제를 테스트해보기 위해, MariaDB부터 설치하자.

[E-commerce App] 데이터 동기화 문제

1 분 소요

하나의 마이크로 서비스를 하나 이상의 인스턴스에서 기동했을 때, 즉, 클라이언트의 요청이 여러 개가 들어왔을 때, 부하분산을 처리하기 위해서 여러 개의 인스턴스를 띄울 수 있다. (-> 랜덤 포트를 활용한 로드밸런싱)

[E-commerce App] Microservice 간 통신 - RestTemplate 이용

3 분 소요

개요 Communication Types 동기 & 비동기 방식 스프링 클라우드로 개발 된 마이크로 서비스들 간에는 동기 방식과 비동기 방식으로 서로 통신을 할 수 있다. Synchronous HTTP communication- 하나의 클라이언트 요청이 들어왔을 때, 해...

[E-commerce App] Spring Cloud Bus

4 분 소요

Actuator를 사용했을 때는, 구성 정보가 변경되었을 때 각각의 서비스(어플리케이션)에 대해서 매번 /actuator/refresh를 호출해야하는 불편함이 있었다. 이번에는 Spring Cloud Bus라는 기능을 이용해 일괄적으로 업데이트 해보자.

[E-commerce App] Native File Repository

최대 1 분 소요

이번에는 Git에 연동하지 않고 Local 파일 시스템에 있는 구성 정보를 사용하는 방법에 대해 알아보자. (Native File Repository는 로컬에 있는 디렉토리를 말한다.)

[E-commerce App] Profiles를 통한 Configuration 적용

최대 1 분 소요

멀티 환경에서 구성 정보를 달리 할 수 있는 방법에 대해 알아보자. 이를 위해, 다양한 profiles를 가진 구성 정보 파일(yml)을 여러개 만들어놓고 상황에 맞는 yml 파일을 적용할 것이다.

[E-commerce App] Configuration Service & Spring Boot Actuator

4 분 소요

지금까지 user-service, order-service, catalog-service를 개발했다. 지금까지는 구성정보 파일을 application.yml 파일을 사용했었는데, 문제는 구성 정보가 변경되면 서비스 자체를 다시 빌드한 뒤에 배포해야 한다는 것이다. 이러한 점을 개선...

[E-commerce App] Users Microservice - JWT 처리 과정

최대 1 분 소요

개요 전통적인 인증 시스템 클라이언트 단에서 authenticate 요청을 위해 username과 password를 서버에 전달한다. 서버 단에서 인증 절차를 거친 뒤에 200 OK 라면 세션을 발급해 쿠키에 sessionId를 담아 응답한다. 클라이언트 단에서 이후 ...

[E-commerce App] Users Microserviced와 Spring Cloud Gateway 연동

최대 1 분 소요

이전까지는, user-microservice에 랜덤포트가 적용되어있기 때문에 매번 유레카를 통해 user-microservice의 포트번호를 확인한 뒤에 요청해야했다. 그런데 user-microservice를 게이트웨이 서비스에 등록하게 되면, 할당된 포트에 상관없이 서비스의 n...

[E-commerce App] Users Microservice

5 분 소요

개요 user-microservice는 UI는 없이 REST API 형식으로 구현할 것이다. 그리고 위 사진에서 보이는 기능들을 개발할 것이다.

[E-commerce App] E-commerce 어플리케이션 소개

1 분 소요

E-commerce란, 전자상거래로 쉽게 말해 쇼핑몰 서비스라고 할 수 있다. 이번에는 비즈니스 로직이라던가 도메인에 포커스를 맞추는게 아니라, 스프링 클라우드와 스프링 부트를 이용해 마이크로 서비스를 만드는 것 자체에 포커스를 맞출 것이다. 전체 어플리케이션 개요를 살펴보자.

[Spring Cloud Gateway] Load Balancer

3 분 소요

이번에는 Spring Cloud Gateway와 Eureka 서버를 연동해보자. 유레카라는 네이밍 서비스에 스프링 게이트웨이를 등록하고, first-service와 second-service까지 등록해보자.

[Spring Cloud Gateway] Logging Filter

1 분 소요

이 전에 살펴본 Global Filter를 로깅 출력에 적용해보자. 코드 apigateway-service filter/LoggingFilter.java 이 전에 만든 GlobalFilter와 같은 위치에 LoggingFilter를 생성한다. ```java @Component @S...

[Spring Cloud Gateway] Global Filter

1 분 소요

Global Filter도 이전 글에서 만든 Custom Filter와 비슷한 방식으로 만들 수 있다. (apply() 메서드 지정) 하지만 Global Filter는 “공통” 필터라는 점에서 Custom Filter와 차이가 있다. Custom Filter는 아래와 같이 라우팅 ...

[Spring Cloud Gateway] Custom Filter 적용

1 분 소요

Custom Filter는 사용자 정의 필터로 로그를 출력하거나, 인증을 처리하거나, 로케일을 바꿀 수 있다. 이번에는 직접 Custom Filter를 정의해 등록해보자.

Spring Cloud Gateway 란?

1 분 소요

Netflix Zuul은 Spring Boot 2.4.x 버전부터는 사용할 수 없기 때문에, 대신해서 Spring Cloud Gateway를 사용해 게이트웨이 서비스와 라우팅 서비스를 구현해보도록 하자. Spring Cloud Gateway는 Zuul과 달리 비동기 처리가 가능하다...

API Gateway란?

3 분 소요

사용자나 외부 시스템으로부터의 요청을 단일화하여 처리할 수 있도록 해주는 API Gateway Service에 대해 알아보자. 1. API Gateway Service 역할 API Gateway Service는 사용자가 설정한 라우팅 설정에 따라 각각의 엔드포인트로 클라이언트를 대...

User Service - Load Balancer

1 분 소요

이전 글에서처럼 모든 작업을 할 때 마다 포트 번호를 등록하는 것은 상당히 불편한 작업이다. 이런 작업을 간단히 하기 위해서 spring boot에서 지원해주는 랜덤포트 방식을 사용해보자.

User Service - 등록

2 분 소요

1. UserService 이번에는 유레카 서버에 등록할 수 있는 샘플 마이크로 서비스를 만들어보자.

Spring Cloud란?

1 분 소요

Spring Cloud란 기존의 모놀리스 방식이 아닌, 각각의 기능을 독립적으로 개발하기 위한 마이크로 서비스 아키텍쳐(MSA)를 지원하기 위한 프레임워크이다.

SOA vs. MSA

3 분 소요

SOA vs. MSA Service Oriented Architecture 와 Microservice Architecture의 공통점과 차이점에 대해 알아보자.

Microservice Architecture란?

3 분 소요

Microservice 위 사진은 아마존과 넷플리스의 마이크로 서비스에 대한 구성도이다. 두 회사는 클라우드 서비스를 가장 잘 사용하고 있고, 활발히 서비스하고 있으며, 외부로 공개하고 있는 회사로 알려져 있다. 아마존의 마이크로 서비스 구성도를 보면, 회색의 점들은 마이크로 서...

Monolithic vs. Microservice

4 분 소요

시스템을 구축하고 운영하는 방식 중에, 모놀리식 방식과 마이크로 방식에 대해 알아보자.

12-Factors

4 분 소요

클라우드 네이티브 어플리케이션을 구축함에 있어 고려해야할 열 두가지 항목인 12 Factors에 대해 알아보자. 그럼 이제 이 열 두가지에 대해 하나씩 살펴보자.

Cloud Native Application

3 분 소요

이 전 글에서 Cloud Natice Architecture에 관해 살펴보았다. Cloud Natice Architecture에 의해 설계되고 구현되는 어플리케이션을 Cloud Native Application이라고 한다. Cloud Native Application는, 이전에 ...

Cloud Native Architecture

2 분 소요

2010년대 이후부터 IT 시스템은 Antifragile 또는 Cloud Native Architecture 형태로 발전되어왔다. 기존에 로컬 한경이나 사내에서 구축하고 운영하였던 시스템을 클라우드 환경으로 전환하기 위해서 어떠한 아키텍처를 가져야 하는지 알아보자

Software Architecture

1 분 소요

Antifragile Auto scaling: 자동 확장성을 갖는다. Microservices: 클라우드 네이티브 어플리케이션의 핵심이다. Chaos engineering Continuous deployments

맨 위로 이동 ↑

CS50

[CS50] C 언어: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 컴퓨팅 사고: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 알고리즘: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 알고리즘: 재귀

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: 명령행 인자

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: 배열(2)

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: 배열(1)

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: 디버깅

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 배열: 컴파일링

2 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 자료구조: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 자료구조: 트라이

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 메모리: QUIZ

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 메모리: 파일 읽기

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 메모리: 파일 쓰기

2 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 메모리: 문자열

최대 1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

[CS50] 메모리: 포인터

1 분 소요

❄️ David Malan 교수의 모두를 위한 컴퓨터 과학(CS50 2019)을 바탕으로 정리한 내용입니다.

맨 위로 이동 ↑

Devlog

[S3] s3에 이미지 리스트(List) 업로드하기

1 분 소요

이전 글은 이미지 하나를 업로드 할 수 있는 api를 구현했다. 이번에는 이미지 리스트(List<MultipartFile>)를 업로드 할 수 있도록 변경해보자. 우선, 기존에 작성한 ImageService.java와 S3Uploader.java는 삭제하였다.

[S3] s3에 이미지 업로드하기

4 분 소요

S3에 이미지 업로드하기 1. gradle에 dependency 추가 implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

[S3] 프리티어 버킷 생성 및 IAM 사용자 생성

1 분 소요

버킷 생성 1. 버킷 이름 설정 주의 버킷 이름을 설정하고, 🚨”ACL 활성화됨”을 클릭한다. (처음에 비활성화됨을 클릭했다가 에러가 발생했다…) 그리고 AWS 리전은 🌟”EC2와 동일한 리전”을 선택해야 요금이 청구되지 않는다!!

Intellij 환경변수 등록하기

최대 1 분 소요

application.yml 파일에 ${} 형식으로 환경 변수를 작성했다. 이후부터는 인텔리제이 실행 시 환경변수를 주입하여 실행해야 한다.

[Docker] 프로젝트를 Dockerize 하기

2 분 소요

기존에 우분투 서버 자체에서 설치했던 mysql을 도커 컴포즈를 이용하여 설치하고 배포할 예정이다. 이전에 정리해놨던 글을 참고하여 Jenkins를 통한 애플리케이션 빌드 및 자동 배포 슬랙으로 젠킨스 알림 받기 젠킨스와 소나큐브 연동하기

Spring Rest Docs 적용하기

3 분 소요

Spring Rest Docs는 우아한 형제들 기술블로그를 보고 적용해보고 싶은 마음이 들었다.

Centos jenkins 타임존 변경

1 분 소요

타임존 확인 http://{JENKINS_IP}:{JENKINS_PORT}/systemInfo에 접속한 뒤, timezone을 검색하면 확인할 수 있다.

EC2 인스턴스 타임존 변경

최대 1 분 소요

spring boot 프로젝트에서는 한국 시간으로 보내는데, 포스트맨으로 테스트해보면 UTC 로 나와 당환한 적이 있었다. 아래처럼 ec2 인스턴스에 접속해 타임존을 변경하자.

EC2 + Jenkins를 이용해 CI/CD 구축하기

3 분 소요

0. 로컬(mac)에서 jenkins 설치 1) Jenkins 설치 brew를 통해 젠킨스를 설치한다. $ brew install jenkins 젠킨스를 설치한다음 아래의 명령어로 젠킨스를 제어할 수 있다. start 명령어를 통해 젠킨스를 실행한다. $ brew services...

JWT payload 정보 가져오기

1 분 소요

JWT를 사용하면서 access token의 페이로드 안에 있는 exp 정보를 가져와야할 일이 생겼다.

Enum 파라미터 바인딩

최대 1 분 소요

게시판 서비스를 구현하고 있는데, RequestBody에 들어갈 게시판 타입을 enum으로 정의했다. 이 때, 해당 타입을 string 형태로 앞의 세 글자만 넣고 싶었다.

조회 수 중복 방지

1 분 소요

특정 게시글을 조회할 때, 조회 수가 중복으로 카운트 되지 않도록 쿠키를 이용해 구현해보자. 서버 PostServiceImpl.java ```java @Override @Transactional public DetailedPostInfoDto getDetailedPostInfo(L...

FCM으로 푸시알림 구현하기

3 분 소요

1. firebase 설정 클라이언트 프로젝트 생성이 완료되면 클라이언트 프로젝트에 넣어야 할 설정파일을 받아야 한다. 사진처럼 각 클라이언트에 맞는 플랫폼을 선택한다.

[Naem] spring security + jwt + redis

최대 1 분 소요

AuthenticationEntryPoint 인증 과정에서 실패하거나 인증을 위한 헤더정보를 보내지 않은 경우 401(UnAuthorized) 에러가 발생하게 된다. Spring Security에서 인증되지 않은 사용자에 대한 접근 처리는 AuthenticationEntryPoin...

맨 위로 이동 ↑

Spring

[SPRING] JPA - 엔티티 매핑

5 분 소요

데이터베이스 스키마 자동 생성 hibernate.ddl.auto create: 기존 테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop: create와 같으나 종료시점에 테이블 DROP update: 변경분만 반영 (운영DB에는 사용하면 안됨)...

[SPRING] spring security + swagger 사용하기

1 분 소요

Swagger란? 로젝트 내 API를 Swagger 설정을 통해 자동으로 문서화해주는 도구로 사람이 일일이 작업할 필요 없이 프로젝트 실행을 통해 코드 내에서 변경사항(return 유형이나 parameter 수 변경 등)이 발생하여도 바로 자동으로 API문서를 만들어주므로 매우 편...

[SPRING] JPA 웹 애플리케이션 - 2. 도메인 분석 설계

7 분 소요

1. 요구사항 분석 - 기능 목록 회원 기능 • 회원 등록 • 회원 조회 상품 기능 • 상품 등록 • 상품 수정 • 상품 조회 주문 기능 • 상품 주문 • 주문 내역 조회 • 주문 취소 기타 요구사항 • 상품은 재고 관리가 필요하다. • 상품의 종류는 도서, 음...

[SPRING] JDBC란?

1 분 소요

JDBC 등장 이유 애플리케이션 서버와 DB 일반적인 사용법

[SPRING] 로그인 처리 - 2. 필터, 인터셉터

14 분 소요

요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 문제는 로그인 하지 않은 사용자도 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다는 점이다. 이를 해결하기 위해서, 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성하면 되겠...

[SPRING] 로그인 처리 - 1. 쿠키, 세션

12 분 소요

이전 프로젝트에 이어서 로그인 처리 기능을 학습한다. 🔎 package 구조 도메인이 가장 중요하다. 도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 ...

[SPRING] Bean Validation

11 분 소요

소개 검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 이런 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 ...

[SPRING] 검증 - 오류 코드와 메시지 처리

10 분 소요

🧩 오류 코드와 메시지 처리 1 FieldError 생성자 FieldError 는 두 가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(St...

[SPRING] 타임리프 - 1. 기본 기능

18 분 소요

타임리프 특징 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다.

[SPRING] 서블릿 -> JSP -> MVC 패턴 흐름 (💡Remind)

최대 1 분 소요

흐름 서블릿은 JSP와 같은 뷰 템플릿 기능이 약해서 불편했다. (서블릿은 비즈니스 로직에 html 사용, JSP는 뷰 로직에 자바 사용) JSP에 기능을 다 담자니, 코드가 하나의 JSP에 다 들어가니까 유지보수가 힘들었다. 로직이 있는 쪽은 서블릿으로 해결하고, 뷰...

[SPRING] PRG(Post/Redirect/Get)와 RedirectAttributes

2 분 소요

개요 이전글에서 다룬 상품 등록 처리 컨트롤러는 심각한 문제가 있다. (addItemV1 ~ addItemV4) 상품 등록을 완료하고 웹 브라우저의 새로고침 버튼을 클릭해보자. 상품이 계속해서 중복 등록되는 것을 확인할 수 있다.

[SPRING] 타임리프(맛보기) & @ModelAttribute

7 분 소요

✅ 상품 목록 컨트롤러 컨트롤러 로직은 itemRepository에서 모든 상품을 조회한 다음에 모델에 담는다. 그리고 뷰 템플릿을 호출한다. ```java @Controller @RequestMapping(“/basic/items”) //@RequiredArgsConstructo...

[SPRING] HTTP 응답

3 분 소요

HTTP 응답 - 개요 응답 데이터는 이미 앞에서 일부 다룬 내용들이지만, 응답 부분에 초점을 맞추어서 정리해보자. 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다. 정적 리소스예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사...

[SPRING] HTTP 요청 파라미터 & HTTP 요청 메시지

9 분 소요

HTTP 요청 - 기본, 헤더 조회 애노테이션 기반의 스프링 컨트롤러는 다양한 파리미터를 지원한다. HTTP 헤더 정보를 조회하는 방법을 알아보자. ```java @Slf4j // 로그를 선언해준다. @RestController public class RequestHeaderCon...

[SPRING] 스프링 MVC 구조 이해 (v1~v3)

3 분 소요

뷰 리졸버 resources>application.properties에 아래 코드를 추가한다. spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp 스프링 부트는 InternalResourceViewResol...

[SPRING] 스프링 MVC 전체 구조

2 분 소요

이전 글에서 직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자. 비교 직접 만든 MVC 프레임워크 구조 직접 만든 프레임워크 -> 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMapp...

[SPRING] MVC 패턴

1 분 소요

MVC 패턴 이전 MVC 패턴을 적용하기 전, 하나의 서블릿이나 JSP는 비즈니스 로직과 뷰 로직을 모두 담당한다.

[SPRING] 동시 요청 - 멀티 쓰레드

2 분 소요

들어가기 전에… 위와 같이 클라이언트가 요청을 하면 tcp/ip 커넥션을 맺고, 서블릿을 호출해준다. 이때, 서블릿을 누가 호출할까? 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 한다. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰...

[SPRING] 서블릿 (Servlet)

최대 1 분 소요

서블릿 서블릿 컨테이너 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 종료하는 생명주기 관리 서블릿 객체는 싱글톤으로 관리- 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율- 최초 로딩 시점에 ...

[SPRING] HTTP 헤더 - 2. 캐시와 조건부 요청

4 분 소요

캐시 기본 동작 (cache-control 헤더) 서버는 cache-control 헤더에 캐시가 유효한 시간(초)을 담아서 응답한다. 웹 브라우저는 내부에 있는 캐시 저장소에 서버의 응답 결과(캐시가 유효한 시간)를 저장한다. 두 번째 요청 부터는 캐시 유효시간 검사 ...

[SPRING] HTTP 상태코드

4 분 소요

상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 치리중 (거의 사용되지 않음) 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필...

[SPRING] 스코프와 Provider, 프록시

3 분 소요

스프링 애플리케이션 실행 시 아래 오류가 발생하는 경우가 있다. Error creating bean with name 'myLogger': Scope 'request' is not active for the current thread; consider defining a scop...

[SPRING] 롬복(Lombok) 사용하기

1 분 소요

build.gradle 변경 build.gradle에 lombok 설정과 라이브러리를 추가한다. ```java plugins { id ‘org.springframework.boot’ version ‘2.7.0’ id ‘io.spring.dependency-management’ ...

[SPRING] 싱글톤 패턴과 싱글톤 컨테이너

3 분 소요

1. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. 예제 ```java packa...

[SPRING] IoC, DI, 그리고 컨테이너

1 분 소요

1. 제어의 역전 IoC (Inversion of Control) 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름이다. ...

맨 위로 이동 ↑

TroubleShooting

[Trouble Shooting] AWS EC2 멈춤 현상 (CPU Utilization)

1 분 소요

문제 상황 AWS EC2에 Spring Boot 서버를 배포하고 하루를 채 버티지 못하고 죽었다. 인스턴스 중지 후 재기동하면 다시 살아나지만 살아나고 나서도 오래 버티지 못하고 또다시 죽는 현상이 반복되었다. AWS EC2 스팩 서버: AWS EC2 위치: Asia Pa...

[Trouble Shooting] error: pathspec did not match any file(s) known to git 해결

최대 1 분 소요

문제 상황 프로젝트의 리모트 저장소에 develop 브랜치를 하나 파서, 작업을 했다. 그 후 인텔리제이에서 develop 브랜치로 체크아웃 해서 작업하려고 git checkout develop 명령어를 입력하니 다음과 같은 에러를 뿜었다. error: pathspec 'devel...

[Trouble Shooting] 젠킨스 ApplicationTests > contextLoads() FAILED 해결

최대 1 분 소요

문제 상황 젠킨스를 이용해 프로젝트를 배포하고 있다. 기존에는 ./gradlew build jar -x test 로 테스트 코드 없이 빌드했는데, spring rest docs 를 적용하기 위해서는 테스 트코드까지 빌드해야하기 때문에 ./gradlew build jar 로 변경하...

[Trouble Shooting] The bucket does not allow ACLs 해결

최대 1 분 소요

문제 상황 AWS S3 연결을 시도하던 중 아래와 같은 에러가 발생했다. "com.amazonaws.services.s3.model.AmazonS3Exception: The bucket does not allow ACLs (Service: Amazon S3; Status Code:...

맨 위로 이동 ↑

Python

[Python] reversed() vs slicing 연산자

1 분 소요

아래와 같이 5개의 알파벳을 담고 있는 리스트를 순회하며 출력하고 싶다면? letters = ['A', 'B', 'C', 'D', 'E'] for문을 이용해 순서대로 접근할 수 있다. for letter in letters: print(letter, end=' ') # A B...

[Python] reduce() 사용법

최대 1 분 소요

reduce 함수란 reduce 함수는 반복 가능한 객체이다. 각 요소들을 이전 연산 결과들과 누적하여 반환한다. functools 모듈에서 불러와야 한다. from functools import reduce

[Python] 비트 연산자

1 분 소요

10진수와 2진수 변환하기 ```py 13(10진수)을 2진수로 변환 print(bin(13)) # 0b1101

[Python] 3. 문자열과 내장함수

최대 1 분 소요

문자열과 내장함수 upper와 lower msg="It is TIME" print(msg.upper()) print(msg.lower()) 출력 IT IS TIME it is time 문자열 slicing print(msg[:2]) # 0부터 1 인덱스까지 자르기 print(m...

[Python] 4. 리스트와 내장함수 (1)

1 분 소요

리스트와 내장함수 (1) 리스트의 선언 a=[] # 빈 리스트 b=list() # 빈 리스트 a=[1,2,3,4,5] b=list(range(6,11)) # 6 7 8 9 10 두 리스트를 이어붙이기 print("a+b: ",a+b) # a+b: [1, 2, 3, 4, 5, 6...

[Python] 7. 람다함수

최대 1 분 소요

들어가기 앞서.. 람다함수란 이름이 없는 익명의 함수이다. 일반적인 함수 인자값을 받은뒤, 1를 더해서 리턴하는 함수가 있다고 하자. ```py def plus_one(x): return x+1

[Python] 2. 반복문

1 분 소요

반복문 for문 ```py a=range(10) print(list(a)) # [0,1,2,3,4,5,6,7,8,9] a=range(1,11) print(list(a)) # [1,2,3,4,5,6,7,8,9,10]

맨 위로 이동 ↑

Python CodingTest

[Python-CodingTest] Lv2. 방문 길이

최대 1 분 소요

방문 길이 문제 정리 명령어가 매개변수 dirs로 주어질 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하여 return 하는 solution 함수를 완성해 주세요.

[Python-CodingTest] Lv2. 스킬트리

최대 1 분 소요

스킬트리 문제 정리 선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.

[Python-CodingTest] Lv2. 점프와 순간 이동

최대 1 분 소요

점프와 순간 이동 문제 정리 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용...

[Python-CodingTest] Lv2. 영어 끝말잇기

최대 1 분 소요

영어 끝말잇기 문제 정리 사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요. 탈락하는 경우 이전에 말...

[Python-CodingTest] Lv2. 배달

1 분 소요

배달 문제 정리 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 마을의 개수 N, 각 마을을 연결하는 도로의 정보 road, ...

[Python-CodingTest] Lv1. 예산

최대 1 분 소요

소수 만들기 문제 정리 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고...

[Python-CodingTest] Lv1. 소수 만들기

최대 1 분 소요

소수 만들기 문제 정리 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solu...

[Python-CodingTest] 7-8. 사과나무 (BFS: Breadth First Search)

최대 1 분 소요

사과나무 문제 정리 입력 5 10 13 10 12 15 12 39 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 처리 과정 정가운데 좌표를 큐에 넣고 탐색을 시작한다. 큐에서 좌표 하나를 pop 해서 그 좌표로부터 시계 ...

[Python-CodingTest] 7-7. 송아지 찾기 (BFS: Breadth First Search)

최대 1 분 소요

송아지 찾기 문제 정리 입력 5 14 처리 과정 큐를 생성한다. 출발지로부터의 거리(dis[])와 중복체크(ch[]) 리스트를 각각 0과 1로 초기화한다. 큐에서 하나(=cur)를 pop 해서 방문한 뒤에, 거기서부터 -1, +1, +5인 지점을 큐에 넣고 순서대로 ...

[Python-CodingTest] 7-3. 양팔저울 (DFS)

최대 1 분 소요

양팔저울 문제 정리 입력 3 // 추의 개수 1 5 7 // 각각의 추의 무게 처리 과정 추를 양팔저울 왼쪽에 놓는 경우, 오른쪽에 놓는 경우, 사용하지 않는 경우로 나눈다. 왼쪽에 놓으면 추의 무게(weight[L])를 더한다. 오른쪽에 놓으면 추의 무게(weigh...

[Python-CodingTest] 7-1. 최대 점수 구하기 (DFS)

1 분 소요

최대 점수 구하기 문제 정리 입력 5 20 10 5 25 12 15 8 6 3 7 4 처리 과정 문제의 점수와 푸는데 걸리는 시간을 리스트에 담기 v(문제 번호)가 n일 때까지는 else에서 처리하고 n+1일 때 max를 갱신한다. 문제를 푸는 상황에서 DFS() 재...

[Python-CodingTest] 6-14. 인접행렬 (가중치 방향그래프)

1 분 소요

인접행렬 시작하기 전에… 무방향 그래프란? 두 노드(a,b)가 연결되어있을 때 a->b도 가능하고 b->a도 가능하다. 입력 5 5 1 2 1 3 2 4 3 4 4 5 무방향 그래프 구현 ```py import sys sys.stdin = open(“./input/in...

[Python-CodingTest] 6-11. 수들의 조합 (DFS: 깊이우선탐색)

최대 1 분 소요

수들의 조합 문제 정리 입력 5 3 2 4 5 8 12 6 처리 과정 이전에 풀었던 조합 문제와 유사하지만, 여기에서는 1,2,3,4,5 같은 1부터 n까지 수가 아니라 2,4,5,8,12 같이 요소가 n개인 무작위 리스트(=lst)가 주어진다. 조합의 합이 m의 배수인...

[Python-CodingTest] 6-9. 수열 추측하기 (순열,파스칼 응용)

1 분 소요

수열 추측하기 문제 정리 입력 4 16 처리 과정 파스칼의 삼각형의 마지막 값을 구하기 위해서는 처음 입력된 숫자 리스트(=res)와 이항계수(=coef) 값을 일대일 곱셈하는 것이다. 이항계수의 값을 구하는 방법은 조합을 이용한다. (n=4라면 이항계수는 [1(=3C0...

[Python-CodingTest] 6-8. 🌟 순열 구하기 (DFS: 깊이우선탐색)

1 분 소요

순열 구하기 문제 정리 입력 3 2 처리 과정 중복을 허락하지 않는 체크리스트(=ch) 생성 (인덱스 번호가 동일하도록 n+1개 생성) 순열 결과 리스트(=res[L])에 값 넣기 전에, 체크리스트의 값이 0인지 확인 체크리스트 값이 0 이라면, 1을 집어넣고 순열 ...

[Python-CodingTest] 6-7. 동전교환 (DFS: 깊이우선탐색)

최대 1 분 소요

동전교환 문제 정리 입력 3 1 2 5 15 처리 과정 레벨(=L)과 동전의 합(=sum)을 파라미터로 갖는 DFS() 선언 동전 리스트(=coin)를 내림차순 정렬 한 뒤 큰 수부터 sum에 누적하며 재귀 sum이 m일 때의 레벨(=L)로 min 갱신

[Python-CodingTest] 6-5. 바둑이 승차 (DFS: 깊이우선탐색)

1 분 소요

바둑이 승차 문제 정리 입력 259 5 81 58 42 33 61 처리 과정 i가 n과 같지 않을 때, DFS에 다음 인덱스(=i+1)와 누적합(=sum)을 전달 이때 누적합은 원소로 사용될 때는 해당 lst 값을 누적하고, 사용되지 않을 때는 그대로 전달 n-1까지...

[Python-CodingTest] 6-3. 부분집합 구하기 (DFS: 깊이우선탐색)

최대 1 분 소요

부분집합 구하기 문제 정리 입력 3 처리 과정 원소를 부분집합으로 사용할 때와 사용하지 않을 때의 상태로 나눠서 접근 상태를 담을 체크 리스트(ch) <- 원소 번호와 ch의 인덱스가 동일 ch[i]==1이면 사용, ch[i]==0이면 사용하지 않음 종착 지...

[Python-CodingTest] 6-1. 재귀함수를 이용한 이진수 출력

1 분 소요

재귀함수를 이용한 이진수 출력 문제 정리 입력 11 처리 과정 재귀함수 정의 x를 2로 나눈 나머지를 출력 파라미터에 x 대신 x//2를 전달하면서 재귀함수 호출 순서를 거꾸로 출력하기 위해서 출력문(2번)과 재귀문(3번)의 위치 바꾸기

맨 위로 이동 ↑

SQL

[SQL-CodingTest] Lv3. 없어진 기록 찾기

최대 1 분 소요

없어진 기록 찾기 문제 정리 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. 풀이 SELECT A.animal_id, A.name from animal_ou...

[SQL-CodingTest] Lv2. 중성화 여부 파악하기

최대 1 분 소요

중성화 여부 파악하기 문제 정리 보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 ‘Neutered’ 또는 ‘Spayed’라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 ...

[SQL-CodingTest] Lv2. NULL 처리하기

최대 1 분 소요

NULL 처리하기 문제 정리 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 “No na...

[SQL-CodingTest] Lv2. DATETIME에서 DATE로 형 변환

최대 1 분 소요

DATETIME에서 DATE로 형 변환 문제 정리 ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다. 풀이 SELECT animal_id,name,DATE...

[SQL-CodingTest] Lv2. 중복 제거하기

최대 1 분 소요

중복 제거하기 문제 정리 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. 풀이 SELECT COUNT(DISTINCT name) AS count from animal_...

[SQL-CodingTest] Lv2. 입양 시각 구하기(1)

최대 1 분 소요

입양 시각 구하기(1) 문제 정리 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 풀이 SELECT ho...

[SQL-CodingTest] Lv2. 동물 수 구하기

최대 1 분 소요

동물 수 구하기 문제 정리 동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요. 풀이 SELECT count(*) as count from animal_ins 정리 출력 결과를 아래와 같이 count만 보고 싶다면, select 이후에 , 없이 바로...

[SQL-CodingTest] Lv2. 이름에 el이 들어가는 동물 찾기

최대 1 분 소요

이름에 el이 들어가는 동물 찾기 문제 정리 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 ‘el’이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 “EL”이 들어가는 개의 아이디와 이름을 조회...

[SQL-CodingTest] Lv2. 동명 동물 수 찾기

최대 1 분 소요

동명 동물 수 찾기 문제 정리 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. 풀이 SELECT name, count(nam...

[SQL-CodingTest] Lv2. 최솟값 구하기

최대 1 분 소요

최솟값 구하기 문제 정리 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. 풀이 SELECT MIN(datetime) from animal_ins 정리 데이터 최대,최소 값 가져오기 SELECT MAX(컬럼) FR...

[SQL-CodingTest] Lv2. 루시와 엘라 찾기

최대 1 분 소요

루시와 엘라 찾기 문제 정리 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. 풀이 SELECT animal_id, name, sex_...

[SQL-CodingTest] Lv2. 고양이와 개는 몇 마리 있을까

최대 1 분 소요

고양이와 개는 몇 마리 있을까 문제 정리 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. 내 답 SELECT animal_type, count(animal_type) as count from...

[SQL-CodingTest] Lv1. 여러 기준으로 정렬하기

최대 1 분 소요

여러 기준으로 정렬하기 문제 정리 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다. 내 답 SELECT animal_id, name, d...

[SQL-CodingTest] Lv1. 동물의 아이디와 이름

최대 1 분 소요

어린 동물 찾기 문제 정리 동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. 내 답 SELECT animal_id, name from animal_ins order by animal_id asc

[SQL-CodingTest] Lv1. 어린 동물 찾기

최대 1 분 소요

어린 동물 찾기 문제 정리 동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. 내 답 SELECT animal_id, name from animal_ins where intake_condition!...

[SQL-CodingTest] Lv1. 아픈 동물 찾기

최대 1 분 소요

아픈 동물 찾기 문제 정리 동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. 내 답 SELECT animal_id, name from animal_ins where intake_condition=...

[SQL-CodingTest] Lv1. 이름이 있는 동물의 아이디

최대 1 분 소요

이름이 있는 동물의 아이디 문제 정리 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다. 내 답 SELECT animal_id from animal_ins where name is not null ...

[SQL-CodingTest] Lv1. 역순 정렬하기

최대 1 분 소요

역순 정렬하기 문제 정리 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. 내 답 SELECT name,datetime from animal_ins order by animal_id desc...

[SQL-CodingTest] Lv1. 이름이 없는 동물의 아이디

최대 1 분 소요

이름이 없는 동물의 아이디 문제 정리 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다. 내 답 SELECT ANIMAL_ID from ANIMAL_INS where NAME is NU...

[SQL-CodingTest] Lv1. 최댓값 구하기

최대 1 분 소요

최댓값 구하기 문제 정리 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. 내 답 SELECT MAX(DATETIME) from ANIMAL_INS 정리 데이터 최대,최소 값 가져오기 SELECT MAX(컬럼) FROM 테이블...

[SQL-CodingTest] Lv1. 상위 n개 레코드

최대 1 분 소요

상위 n개 레코드 문제 정리 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요. 내 답 SELECT name from animal_ins order by datetime limit 1 정리 조회할 레코드의 개수 지정하기 ...

[SQL-CodingTest] Lv1. 모든 레코드 조회하기

최대 1 분 소요

모든 레코드 조회하기 문제 정리 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. 내 답 SELECT * from ANIMAL_INS order by ANIMAL_ID ASC; 정리 데이터 오름차순, 내림차순 조회 ...

맨 위로 이동 ↑

Algorithm

[알고리즘] 최소신장트리와 크루스칼 알고리즘의 이해

최대 1 분 소요

1. 신장 트리 란? Spanning Tree, 또는 신장 트리 라고 불리움 (Spanning Tree가 보다 자연스러워 보임) 원래의 그래프의 모든 노드가 연결되어 있으면서 트리의 속성을 만족하는 그래프 신장 트리의 조건 본래의 그래프의 모든 노드...

[알고리즘] 최단 경로 알고리즘 이해

4 분 소요

1. 최단 경로 문제란? 최단 경로 문제란 두 노드를 잇는 가장 짧은 경로를 찾는 문제임 가중치 그래프 (Weighted Graph) 에서 간선 (Edge)의 가중치 합이 최소가 되도록 하는 경로를 찾는 것이 목적

[알고리즘] 탐욕 알고리즘

1 분 소요

1. 탐욕 알고리즘 이란? Greedy algorithm 또는 탐욕 알고리즘 이라고 불리움 최적의 해에 가까운 값을 구하기 위해 사용됨 여러 경우 중 하나를 결정해야할 때마다, “매순간 최적”이라고 생각되는 경우를 선택하는 방식으로 진행해서, 최종적인 값을 구하는 방식

[알고리즘] 순차 탐색 (Sequential Search)

최대 1 분 소요

1. 순차 탐색 (Sequential Search) 이란? 탐색은 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 의미 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법

[알고리즘] 병합 정렬 (merge sort)

1 분 소요

1. 병합 정렬 (merge sort) 재귀용법을 활용한 정렬 알고리즘 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 두 부분 리스트를 다시 하나의 정렬된 리...

[알고리즘] 퀵 정렬 (quick sort)

1 분 소요

1. 퀵 정렬 (quick sort) 이란? 정렬 알고리즘의 꽃 기준점(pivot 이라고 부름)을 정해서, 기준점보다 작은 데이터는 왼쪽(left), 큰 데이터는 오른쪽(right) 으로 모으는 함수를 작성함 각 왼쪽(left), 오른쪽(right)은 재귀용법을 사용해...

[알고리즘] 동적 계획법(Dynamic Programming)과 분할 정복(Divide and Conquer)

2 분 소요

1. 정의 동적계획법 (DP) 입력 크기가 작은 부분 문제들을 해결한 후 ➡️ 해당 부분 문제의 해를 활용해서 ➡️ 보다 큰 크기의 부분 문제를 해결 ➡️ 최종적으로 전체 문제를 해결하는 알고리즘 상향식 접근법으로, 가장 최하위 해답을 구한 후 ➡️ 이를 저장하고 ➡️ 해...

[알고리즘] 재귀 호출 (recursive call)

2 분 소요

1. 재귀 용법 (recursive call, 재귀 호출) 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘 작성시 사용되므로, 익숙해져야 함

[알고리즘] 공간 복잡도

1 분 소요

알고리즘 계산 복잡도는 다음 두 가지 척도로 표현될 수 있음- 시간 복잡도: 얼마나 빠르게 실행되는지- 공간 복잡도: 얼마나 많은 저장 공간이 필요한지

[알고리즘] 선택 정렬

최대 1 분 소요

1. 선택 정렬 (selection sort) 란? 다음과 같은 순서를 반복하며 정렬하는 알고리즘 주어진 데이터 중, 최소값을 찾음 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 ...

[알고리즘] 삽입 정렬

1 분 소요

1. 삽입 정렬 (insertion sort) 란? 삽입 정렬은 두 번째 인덱스부터 시작 해당 인덱스(key 값) 앞에 있는 데이터(B)부터 비교해서 key 값이 더 작으면, B값을 뒤 인덱스로 복사 이를 key 값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터...

[알고리즘] 버블 정렬

2 분 소요

들어가기 전에… 알고리즘을 효과적으로 공부하는 방법은 문제를 읽고 바로 코드를 작성하는 것이 아니라!

맨 위로 이동 ↑

Arrays101

[LeetCode] Sort Array By Parity

최대 1 분 소요

Question Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers. Return any array that satis...

[LeetCode] Move Zeroes

최대 1 분 소요

Question Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Note that you must do thi...

[LeetCode] Valid Mountain Array

2 분 소요

Question Given an array of integers arr, return true if and only if it is a valid mountain array. Recall that arr is a mountain array if and only if: ...

[LeetCode] Check If N and Its Double Exist

1 분 소요

Question Given an array arr of integers, check if there exists two integers N and M such that N is the double of M ( i.e. N = 2 * M). 리스트의 요소들 중에, (한 요소)*2를...

[LeetCode] Remove Element

1 분 소요

Question Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The relative order of the elements may be changed. S...

[LeetCode] Merge Sorted Array

1 분 소요

Question You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in n...

[LeetCode] Duplicate Zeros

1 분 소요

Question Given a fixed-length integer array arr, duplicate each occurrence of zero, shifting the remaining elements to the right. Note that elements beyond t...

[LeetCode] Squares of a Sorted Array

최대 1 분 소요

Question Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order. 리스트가 주어질 때...

[LeetCode] Find Numbers with Even Number of Digits

최대 1 분 소요

Question Given an array nums of integers, return how many of them contain an even number of digits. 리스트가 주어질 때, 자리수가 짝수인 수의 개수를 구하는 문제였다.

[LeetCode] Max Consecutive Ones

최대 1 분 소요

Question Given a binary array nums, return the maximum number of consecutive 1’s in the array. 0과 1로 이루어진 리스트가 주어질 때, 연속된 1의 개수의 최대를 구하는 문제였다.

맨 위로 이동 ↑

JavaScript

[JavaScript] 10. Promise

3 분 소요

Promise란? 자바스크립트에서 제공하는 비동기를 간편하게 처리할 수 있도록 도와주는 오브젝트 비동기를 처리할 때 콜백함수 대신 Promise 사용 가능 🔔 State (상태) pending: 프로미스가 만들어져서 우리가 지정한 오퍼레이션을 수행중인 상태 fulfilled: 오페...

[JavaScript] 9. Callback

1 분 소요

시작하기 앞서… javascript는 동기적이다. 즉, hoisting이 된 이후부터는 위에서부터 아래로 코드가 나타나는 순서대로 작동한다. hoisting: var 변수나 함수 선언들이 자동으로 제일 위로 올라가는 것

[JavaScript] 11. async와 await

2 분 소요

들어가기 앞서… async와 await은 깔끔하게 프로미스를 사용할 수 있는 방법 하지만 모든 프로미스를 async와 await으로 대체하라는 것은 아님!

[JavaScript] 8. JSON 개념 정리

2 분 소요

Object to JSON stringify(obj) 배열을 json으로 변환 const fruits = ['apple', 'banana']; let json = JSON.stringify(fruits); console.log(json); // ["apple","banana"] ...

[JavaScript] 5. Object

1 분 소요

Literals and properties object는 key와 value의 집합체이다. object = {key : value}; ```js // object 생성 const obj1 = {}; // ‘object literal’ syntax const obj2 = new Ob...

[JavaScript] 6. 배열과 APIs

1 분 소요

Object와 자료구조의 차이점? 토끼와 당근이 있을 때 토끼와 당근 각각은 Object이다. 토끼: 눈, 코, 입, 뛴다, 먹는다 당근: 주황색, 비타민C 이렇듯 Object는 서로 연관된 특징과 행동을 묶어둔 것을 말함 토끼 여러마리 혹은 당근 여러개와 같이 비슷한 타입의 Ob...

[JavaScript] 4. Class와 Object의 차이점

2 분 소요

Class와 Object 개념 정리 Class: template template: 해당 클래스에는 어떠한 데이터가 들어갈 수 있는지 템플릿만 정의해놓음 declare once: 한번만 선언 no data in: 정의만 한 것으로 실제 메모리에 올라가지 않음

[JavaScript] 1. Data Types

2 분 소요

💎 Data Type Mutable Data Type - let, rw(read/write) let은 변수 선언시에 사용한다. 더이상 Var 타입을 사용하면 안되는 이유 1. Var hoisting age = 4; var age; console.log(age); 위 코드에서 변수...

맨 위로 이동 ↑

Git

[Git] 다양한 브랜치 병합 방법 (Squash and Merge & Reabse and Merge)

2 분 소요

학습 배경 기존에 혼자서 진행하고 있던 프로젝트에서 백엔드 개발자를 한 분 더 모시게 되면서, 다양한 병합 방법에 대한 이야기가 나왔다. 혼자 개발할 때에는 고민해보지 않았던 부분이라 이번 기회에 공부를 하게 되었다.

[Git] 브랜치 전략

4 분 소요

Git Branch 종류 Gitflow Workflow에서는 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)을 포함하여 총 5가지의 브랜치를 사용한다. 아래는 Gitflow Work...

[Git] .gitignore 파일 만들기

최대 1 분 소요

.gitignore 이란? 프로젝트를 개발할 때 필요한 파일 이외의 불필요한 로그 파일들이 생성된다. .gitignore은 이러한 파일들을 git 관리 대상에서 제외하기 위해(commit에 포함하지 않도록) 규칙들을 저장한 파일이다.

[Git] remote, clone, pull, push 해보기

최대 1 분 소요

git remote git init git remote add origin "git주소" git status origin이라는 이름으로 원격 저장소 주소를 등록한다. 이제부터 origin이라는 이름을 사용하면 원격 저장소에 접속할 수 있다.

맨 위로 이동 ↑

Sec2

[Python-CodingTest] 2-9. 주사위 게임

최대 1 분 소요

주사위 게임 문제 정리 입력 3 // n 3 3 6 // 1번 사람의 주사위 눈 2 2 2 // 2번 사람의 주사위 눈 6 2 5 // 3(=n)번 사람의 주사위 눈 처리 과정 각 사람의 주사위 눈을 문자로 lst에 저장 정렬 (나중에 가장 큰 수 필요) 리스트에 있...

[Python-CodingTest] 2-8. 뒤집은 소수

1 분 소요

뒤집은 소수 문제 정리 입력 5 // n 32 55 62 3700 250 // n개의 자연수 처리 과정 reverse(x) 작성 x가 인자로 들어왔을 때 x의 일의 자리(t)를 떼어내기 그 일의 자리(t)를 이용한 reverse()의 핵심코드가 res = res*10+t...

[Python-CodingTest] 2-7. 소수 (에라토스테네스의 체)

최대 1 분 소요

소수 (에라토스테네스의 체) 문제 정리 입력 20 // n 처리 과정 리스트의 인덱스 번호를 n까지 생성 & 0으로 초기화 for문 돌면서 lst[i]가 0이면 cnt 1 증가 lst[]의 인덱스 중에 i의 배수들은 모두 1로 체크하기 2~3번 반복

[Python-CodingTest] 2-6. 자릿수의 합

최대 1 분 소요

자릿수의 합 문제 정리 입력 7 // n 137 460 603 40 521 128 125 // n개의 자연수 처리 과정 각 자리수를 더하는 digit_sum() 작성 lst의 요소를 digit_sum()의 인자로 전달하면서 반환값 누적 tot의 max 구하기 ls...

[Python-CodingTest] 2-5. 정다면체

최대 1 분 소요

정다면체 문제 정리 입력 4 6 // n m 처리 과정 0으로 초기화된 카운트 리스트 생성 리스트의 길이는 n+m+3 (두 주사위의 눈의 합이 카운트 리스트의 인덱스가 되기 때문에 n+m을 넘지 않지만 +3은 여유롭게!) cnt에서 max 찾기 cnt에서 값이 m...

[Python-CodingTest] 2-2. K번째 수

최대 1 분 소요

K 번째 수 문제 정리 입력 2 // 테스트 케이스 수 (T) 6 2 5 3 // N s e k 5 2 7 3 8 9 // N개의 숫자로 이루어진 수열 15 3 10 3 // N s e k 4 15 8 16 6 6 17 3 10 11 18 7 14 7 15 // N개의 숫자로 이루...

맨 위로 이동 ↑

NodeJs

[Node.js] Docker Compose 명령어

최대 1 분 소요

Docker Compose란? Docker Compose는 여러 개의 컨테이너(container)로 구성된 애플리케이션을 관리하기 위한 도구이다. Docker Compose 관련 명렁어 아래 명령어를 터미널에 입력한다. up docker-compose up -d Docker Co...

[Node.js] Mocha - 1. 테스트 라이브러리

최대 1 분 소요

node에서 테스트를 위해 사용하는 세가지 라이브러리 mocha mocha는 테스트 코드를 돌려주는 테스트 러너 테스트 수트: 테스트 환경으로 모카에서는 describe()로 구현한다. 테스트 케이스: 실제 테스트를 말하며 모카에서는 it()으로 구현한다.

[Node.js] Jest - 4. 목(Mock) 함수

3 분 소요

들어가기 전에… mock function이란 테스트 하기 위해 흉내만 내는 가짜 함수이다. mock function이 필요한 이유? user db에 접근해서 user list를 select 해오는 작업이 필요하다고 가정했을 때, 작성해야할 코드가 상당히 많아짐 외부 요인(...

[Node.js] TDD(Test Driven Development)를 이용한 개발

최대 1 분 소요

TDD란? 개념 테스트 주도 개발: 테스트가 개발을 이끌어 나간다. 즉, 테스트를 먼저 작성한 뒤에 테스트를 통과하기 위한 코드를 짜는 것이다. 왜 TEST를 해야할까? 테스트를 함으로써 더욱 안정적인 어플리케이션을 만들 수 있고 재설계 및 기능 추가 시 용이하다.

[Node.js] Jest - 1. 유용한 Matchers

2 분 소요

값이 같은지(근사치인지) 판단하는 테스트 fn.js const fn = { add: (a,b) => a+b, makeUser: (name,age) => ({name,age,gender:undefined}) }; module.exports = fn; fn.test...

맨 위로 이동 ↑

EC2

[EC2] 인스턴스의 Redis 외부 접속하기

2 분 소요

EC2 인스턴스에 redis-server가 이미 설치되어 있다는 가정하에 진행한다. 1. Redis Config 설정 redis.conf 파일 열기 ssh 명령어를 이용해 인스턴스에 연결한 뒤 아래 명령어를 실행한다. sudo vi /etc/redis/redis.conf redi...

[EC2] 인스턴스에 redis-server 설치하기

최대 1 분 소요

EC2 인스턴스는 이미 생성되어 있다는 가정하에 진행한다. EC2 인스턴스에 redis-server 설치 1) apt-get 업그레이드 sudo apt-get update sudo apt-get upgrade 2) redis-server 설치 sudo apt-get install...

[EC2] 인스턴스에 mysql-server 설치하기

최대 1 분 소요

EC2 인스턴스는 이미 생성되어 있다는 가정하에 진행한다. 1. EC2 인스턴스에 mysql-server 설치 ssh 명령어를 이용해 인스턴스에 연결한 뒤 아래 명령어를 실행한다. sudo apt-get install -y mysql-server 이때, 8.0 버전을 설치해야한...

[EC2] 인스턴스에 git clone + nodejs 설치하기

최대 1 분 소요

이전에 생성했던 EC2 인스턴스에 접속하여 진행한다. 1. git clone 하기 프로젝트와 연결된 github 주소에서 git clone을 통해 소스코드를 받아온다. 내 소스코드는 master가 아니라 branch에 있기 때문에 아래 명령어를 입력했다. git clone -b [...

[EC2] 인스턴스 생성하기

최대 1 분 소요

Mac M1 환경에서 진행한다. 1. EC2 인스턴스 생성 AWS에 로그인 AWS에 로그인하여 좌측 상단의 EC2를 클릭한다.

맨 위로 이동 ↑

Sec5

[Python-CodingTest] 5-11. 최대힙

최대 1 분 소요

최대힙 최대힙은 완전이진트리로 구현된 자료구조이며, 부모노드값이 왼쪽 자식과 오른쪽 자식노드의 값보다 크게 구성된다. 따라서 루트노트에는 입력된 값들 중 가장 큰 값이 저장되어 있다.

[Python-CodingTest] 5-10. 최소힙

최대 1 분 소요

최소힙 최소힙은 완전이진트리로 구현된 자료구조이며, 부모노드값이 왼쪽 자식과 오른쪽 자식노드의 값보다 작게 구성된다. 따라서 루트노트에는 입력된 값들 중 가장 작은 값이 저장되어 있다. +) 루트노드의 값을 pop 하고 -> 최하위 레벨의 제일 오른쪽 요소를 루트에 올리...

[Python-CodingTest] 5-8. 단어찾기 (해쉬)

최대 1 분 소요

단어찾기 문제 정리 입력 5 big good sky blue mouse sky good mouse big 처리 과정 미리 노트에 적은 단어를 딕셔너리에서 1로 체크 실제 시에 사용된 단어를 딕셔너리에서 0으로 변경 딕셔너리의 value가 1인 요소의 key를 출력

[Python-CodingTest] 5-7. 교육과정설계 (큐)

1 분 소요

교육과정설계 문제 정리 입력 CBA 3 CBDAGE FGCDAB CTSBDEA 처리 과정 수강과목 요소를 하나씩 돌면서… 해당 요소가 필수과목 큐에 포함되어 있는데 필수과목 큐에서 pop한 요소와 다르다면 NO & break 2번에서 break 당하지 않았으며...

[Python-CodingTest] 5-6. 응급실 (큐)

1 분 소요

응급실 문제 정리 입력 6 0 60 60 90 60 60 60 처리 과정 환자 리스트를 튜플 형태로 받기 리스트를 큐로 변경 큐에서 환자(cur)를 pop() 했을 때, 큐 안에 있는 다른 환자들 중에 현재 환자(cur)보다 위험도가 높은 환자가 있다면 현재 환자(c...

[Python-CodingTest] 5-5. 공주 구하기 (큐)

1 분 소요

공주 구하기 문제 정리 입력 8 3 처리 과정 k번째 수를 외치는 사람은 제외된다고 하면, k-1번째까지 외치는 사람은 통과 k-1번째 까지는 popleft() 하고 큐의 뒤쪽으로 append() k번째 수를 외치는 사람은 뒤에 붙이지 않고 popleft()만! ...

[Python-CodingTest] 5-2. 쇠막대기 (스택)

1 분 소요

쇠막대기 문제 정리 입력 ()(((()())(())()))(()) 처리 과정 입력을 스트링 변수(str)에 받기 빈 스택 리스트를 생성 여는 괄호를 만나면 무조건 스택에 넣기 닫는 괄호를 만났을 때에는 두가지 경우가 있음 str에서 해당 닫는 괄호 바로 이전 ...

[Python-CodingTest] 5-1. 가장 큰 수 (스택)

1 분 소요

가장 큰 수 문제 정리 입력 5276823 3 // n m 처리 과정 int형인 n을 int 리스트로 변경 while문 돌면서 스택의 맨 마지막 요소가 나보다 작으면 pop() & m-=1 뺄거 다 뺐으면 내가 들어가기: stack.append(x) 총 m...

맨 위로 이동 ↑

Docker

Dockerfile을 이용한 spring boot 배포

6 분 소요

나중에 mysql과 redis에 볼륨 설정을 추가로 해야한다! 일단 배포부터 진행해보자. (원래 aws ec2 ubuntu를 사용하려고 했는데, 자꾸 중단되는 문제가 발생해 gcp centos7를 사용했다. 따라서 0번은 필요 없지만, 나중에 참고하기 위해 남겨두었다.)

맨 위로 이동 ↑

DataStructure

[자료구조] 힙

7 분 소요

1. 힙 (Heap) 이란? 힙: 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)- 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 힙을 사용하는 이유- 배열에 데이터를 넣고, 최...

[자료구조] 트리

6 분 소요

1. 트리 (Tree) 구조 트리: Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조 실제로 어디에 많이 사용되나?- 트리 중 이진 트리 (Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용됨

[자료구조] 해쉬

3 분 소요

1. 해쉬 구조 Hash Table: 키(Key)에 데이터(Value)를 저장하는 데이터 구조- Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 획기적으로 빨라짐- 파이썬 딕셔너리(Dictionary) 타입이 해쉬 테이블의 예: Key를 가지고 바로 데이터(Value...

[자료구조] 알고리즘 복잡도 표현 기법: 시간 복잡도

1 분 소요

1. 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양할 수 있음 정수의 절대값 구하기- 방법1: 정수값을 제곱한 값에 다시 루트를 씌우기- 방법2: 정수가 음수인지 확인해서, 음수일 때만, -1을 곱하기

[자료구조] 링크드 리스트 (Linked List)

1 분 소요

1. 링크드 리스트 (Linked List) 구조 연결 리스트라고도 함 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 본래 C언어에서는 주요한 데이터 구조이지만, ...

[자료구조] 스택

1 분 소요

1. 스택의 구조 스택은 LIFO(Last In, Fisrt Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름- LIFO: 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 - FILO: 처음에 넣은 데이터를 가장 마지막에 추출하는...

[자료구조] 큐

최대 1 분 소요

1. 큐의 구조 줄을 서는 행위와 유사 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조- 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일- FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방...

[자료구조] 배열

1 분 소요

1. 배열이란? 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조 파이썬에서는 리스트 타입이 배열 기능을 제공함

맨 위로 이동 ↑

MySQL

[MySQL] ERD 작성하기 - through table을 통한 N:M 관계 정의

최대 1 분 소요

예제 하나의 프로젝트는 여러개의 키워드를 추가(add)할 수 있다. 하나의 키워드는 여러 프로젝트에 속해있을(added) 수 있다. 이때, project와 keyword는 N:M 관계이며 이를 데이터베이스 상에서 표현하기 위해 through table을 사용한다.

[MySQL] ERD 작성하기 - Optionality

최대 1 분 소요

Mandatory : Optional 저자 - 댓글 저자는 댓글을 작성하지 않을수도 있다. 각 댓글은 반드시 저자가 있다. 이때, Mandatory와 Optional의 관계는 다음과 같이 표현한다. 저자 - 댓글의 cardinality는 1:N이므로 optionality와 c...

맨 위로 이동 ↑

Sec3

[Python-CodingTest] 3-6. 격자판 최대합

1 분 소요

격자판 최대합 문제 정리 입력 5 10 13 10 12 15 12 39 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 처리 과정 하나의 for문 안에서 행과 열의 최대합을 한번에 구하기 또다른 for문 안에서 두 대각선의...

[Python-CodingTest] 3-5. 수들의 합

최대 1 분 소요

수들의 합 문제 정리 입력 8 3 1 2 1 3 1 1 1 2 처리 과정 두개의 포인터 변수(p1,p2) 초기화 p1=0 p2=1 tot: lst[p1]부터 lst[p2] “이전”까지의 합 tot<m tot==m tot>m으로 경우의 수 나눠서 작성 t...

[Python-CodingTest] 3-4. 두 리스트 합치기

1 분 소요

두 리스트 합치기 문제 정리 입력 10 1 10 27 39 50 61 65 70 93 93 7 7 51 65 66 70 82 93 처리 과정 포인터 변수 초기화 빈 리스트 생성 p1이 n이 되거나 p2가 m이 되면 while문 종료 lst_1과 lst_2의 각...

[Python-CodingTest] 3-3. 카드 역배치

최대 1 분 소요

카드 역배치 문제 정리 입력 5 10 9 13 1 2 3 4 5 6 1 2 3 4 5 6 1 20 1 20 처리 과정 카드 리스트 생성 구간의 src와 dest를 입력받기 주어진 구간에서 위치가 대칭인 두 수를 swap 카드 리스트는 인덱스 0부터 인덱스 20까지...

[Python-CodingTest] 3-2. 숫자만 추출

최대 1 분 소요

숫자만 추출 문제 정리 입력 kdk1k0kdjfkj0kkdjkfj0fkd 처리 과정 스트링을 돌아가면서 숫자만 추출 약수의 개수 구하는 함수 작성 1번의 결과값을 2번 함수에 전달

[Python-CodingTest] 3-1. 회문 문자열 검사

최대 1 분 소요

회문 문자열 검사 문제 정리 입력 ``` 5 // n level // 1번째 단어 moon // 2번째 단어 abcba // 3번째 단어 soon // 4번째 단어 gooG // 5(=n)번째 단어

맨 위로 이동 ↑

Sec4

[Python-CodingTest] 4-6. 씨름 선수 (그리디 알고리즘)

1 분 소요

씨름 선수 문제 정리 입력 5 // n 172 67 // 1번째 선수: 키 몸무게 183 65 // 2번째 선수: 키 몸무게 180 70 // 3번째 선수: 키 몸무게 170 72 // 4번째 선수: 키 몸무게 181 60 // 5(=n)번째 선수: 키 몸무게 처리 과정 선...

[Python-CodingTest] 4-5. 회의실 배정 (그리디 알고리즘)

최대 1 분 소요

회의실 배정 문제 정리 입력 5 // n 1 4 //1번째 회의: 시작 종료 2 3 //2번째 회의: 시작 종료 3 5 //3번째 회의: 시작 종료 4 6 //4번째 회의: 시작 종료 5 7 //5(=n)번째 회의: 시작 종료 처리 과정 튜플 형태로 회의 시간 입력받기 ...

[Python-CodingTest] 4-2. 랜선 자르기 (결정 알고리즘)

1 분 소요

랜선 자르기 문제 정리 입력 4 11 // k n 802 // 1번째 랜선 743 // 2번째 랜선 457 // 3번째 랜선 539 // 4(=k)번째 랜선 처리 과정 랜선 리스트에서 가장 긴 랜선의 길이 구하기 길이가 len인 랜선으로 잘랐을 때 몇개 나오는지 확인하는...

[Python-CodingTest] 4-1. 이분검색

최대 1 분 소요

이분검색 문제 정리 입력 8 32 // n m 23 87 65 12 57 32 99 81 // 요소가 n개인 리스트 처리 과정 리스트 오름차순 정렬 리스트의 양 끝 요소를 가리키는 두 개의 포인터(p1,p2) 설정 (p1+p2)//2인 mid 설정 lst[mid]...

맨 위로 이동 ↑

GCP

[GCP] spring boot + jenkins + docker 배포하기 - 1. 젠킨스 서버

6 분 소요

GCP 프로젝트 생성부터 jenkins 설치까지는 이전 글에서 다뤘다. 우선, 이전에 만든 jenkins 인스턴스에서 [유사하게 만들기]로 web 인스턴스를 생성하자. 생성 후에는 외부 고정 IP도 할당하자. (기존에 있던 instance-1은 ubuntu 였으므로 일단 중지해놓자...

[GCP] spring boot + jenkins + docker 배포하기 (임시)

3 분 소요

GCP 프로젝트 생성부터 jenkins 설치까지는 이전 글에서 다뤘다. 우선, 이전에 만든 jenkins 인스턴스에서 [유사하게 만들기]로 web 인스턴스를 생성하자. 생성 후에는 외부 고정 IP도 할당하자. (기존에 있던 instance-1은 ubuntu 였으므로 일단 중지해놓자...

맨 위로 이동 ↑

Sql

[SQL] 문법

3 분 소요

1. COUNT COUNT(*) 으로 존재하는 모든 행을 가져올 수 있다 만약 * 대신 COUNT(NAME)과 같이 사용한다면, NAME 컬럼에 NULL이 들어있지 않은 행 갯수를 가져온다

[SQL] 데이터베이스 개론

2 분 소요

DB (Database) 전자적으로(electronically) 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집함(organized collection)

맨 위로 이동 ↑

PyLevel2

[Programmers] 기능개발 (스택/큐)

1 분 소요

문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 ...

[Programmers] 땅따먹기 (동적 프로그래밍, dp)

1 분 소요

문제 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같...

[Programmers] 가장 큰 정사각형 찾기 (동적 프로그래밍, dp)

최대 1 분 소요

문제 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.)

맨 위로 이동 ↑

Oracle

맨 위로 이동 ↑

H2

[H2] 기본 SQL

최대 1 분 소요

🌟 코드 실행은 cmd+enter 으로 한다.

맨 위로 이동 ↑

Redis

[Redis] docker-compose 이용해 redis 띄우기 + Redis Config

1 분 소요

1. redis image 다운로드 docker pull redis:alpine alpine 은 태그를 의미하며 redis의 버전 등의 값을 줄수 있다. 이를 생략하면 latest를 받는데, alpine 태그의 특징은 이미지를 경량화 시켜서 용량이 작다는 것이다.

맨 위로 이동 ↑

Route53

[Route53] 도메인 연결하기

2 분 소요

1. 도메인 만들기 freenom freenom은 무료 도메인을 제공하는데 일반적인 도메인(.com)이 아닌 .cf나 .ga 같은 잘 사용하지 않는 도메인을 제공한다. 연습용으로 사용하기에는 무료 도메인도 충분하지만, 주의사항은 여기서 알아두자! (참고로, 고대디 혹은 가비아와 ...

맨 위로 이동 ↑

PyLevel1

[Programmers] 순열 검사

최대 1 분 소요

문제 길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다. 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.

맨 위로 이동 ↑

JPA

[JPA] 기본키 생성 전략 - GenerationType

3 분 소요

JPA에서 Entity 객체를 정의할 때 @Id 속성을 함께 정의해야 한다. Id를 정의할 때 “직접 할당하는 방법”과 “데이터베이스가 자동으로 할당해주는 방법”이 있다.

맨 위로 이동 ↑

AboutMe

[AboutMe] 새로운 다짐

1 분 소요

개발 블로그를 둘러보다가 우연히 쟈미님의 devlog를 보게 되었다. 현재는 카카오 백엔드 개발자로 일하고 계신데, 취준생 때의 글을 보니 지금부터라도 많은 노력이 필요함을 깨달았다.

맨 위로 이동 ↑

CleanCode

맨 위로 이동 ↑

SpringSecurity

맨 위로 이동 ↑

ITNews

맨 위로 이동 ↑

SpringBatch

맨 위로 이동 ↑

Security

맨 위로 이동 ↑

Java

맨 위로 이동 ↑

CodeReview

맨 위로 이동 ↑

Database

맨 위로 이동 ↑