생각한 것들을 구현하는데 기초적인 부분까지 찾아봐야했고 해봤던 풀이 방식을 이용하려는 경향이 있는거 같다그래도 자바에 약간은 익숙해진 것 같다
오늘은 continue 와 ArrayList 그리고 Math를 많이 사용했다.값의 형태에 주의하면 더 빨리 할 수 있을것 같다.
오늘의 알고리즘에선 크게 세가지 문제가 있었다.\-문자 코드\-정규표현식\-break잘 기억해두자
최대공약수 찾는 문제에서 위에서부터 내려오는 코드를 짰는데 찾은 순간 break 등으로 멈추어야하는데 그걸 하지 않는 바람에 답이 자꾸 다르게 나와서 한참 고생했다.string 자를때 string.substring/배열 자를때 Arrays.copyOfRange
오늘은 객체지향으로 클래스와 기능 구현을 해보았다.이게 맞나? 싶은 느낌이 있는데 참 아리까리한 것 같다.재사용성이 좋고 중복되는 부분을 줄일 수 있다는 것은 좀 알 것 같다.
기억해 둘 것빌드 안 될 경우 세팅>빌드 실행 배포 > 빌드 도구 > gradle 에서 빌드 및 실행을 IntelluJ로Gradle JVM 버전도 맞추기우클릭 디렉터리를 다음으로 표시에서 소스 폴더로 만들기객체지향으로 클래스와 여러 기능을 구현하는 것을 어제에 이어 했
오늘은 하루종일 강의를 들었다. Spring에 관한 강의였는데 알고리즘을 하면서 익숙해진 문법들이 나와 반가웠고 그것들을 어떻게 써야하는지에 대해 약간 감이 왔다.객체지향에서 다루어본 클래스에 관한 내용들도 나와서 조금 더 지식이 체계화되는듯한 느낌을 받았다.
220723인터페이스는 클래스없이 메소드만 있음 extends 해야함findAllByOrderByModifiedAtDesc(); 수정순으로 정렬500에러는 intelliJ IDEA로 빌드할 경우 발생함기본값인 Gradle로 해야함@EnableJpaAuditing@Get
개인 과제에서 요구한 사항을 모두 완성하였다.포스트에서 {ID}넘겨줄때 큰 따옴표("")로 하는게 아니라 백핑(\`\`)으로 감싸야 한다.함수안에서 함수를 호출하여 값을 받을때 순서가 엉키는 문제가 있어 async를 시도해보았으나 잘 안되어 호출하고 값을 받는 부분을
과제에서 요구하는게 페이지 기능 구현을 완성하는 것이 아니라 단순하게 request를 날려서 response를 받는 것이라는 것을 알았다.이미 html 작성과 구현을 마쳤기 때문에 요구사항을 반영하여 controller 부분을 수정하고 html 구현에서 사용한 부분이
java 파일 실행시 매개변수 하나를 잘못적어서 한시간넘게 고생함보통 잘 안돌아가는 경우는 큰 문제보단 오타 하나 빼먹은 글자 하나인 경우가 대부분이라 찾기도 어렵고 되게 허무하다.
MVC방식은 servlet보다 반복을 줄일 수 있어 코드 수가 줄어든다.@RestController = @Controller + @ResponseBody
Controller 와 HTTP Response 메시지ResponseBody나머지
IoC (제어의 역전) 용도에 맞게 필요한 객체를 그냥 가져다 사용 "DI (Dependency Injection)" = "의존성 주입" 사용할 객체가 어떻게 만들어졌는지는 알 필요 없음 필요할때마다 만들어서(생성해서) 사용하는 것에서 이
IoC (제어의 역전) 용도에 맞게 필요한 객체를 그냥 가져다 사용 "DI (Dependency Injection)" = "의존성 주입" 사용할 객체가 어떻게 만들어졌는지는 알 필요 없음 필요할때마다 만들어서(생성해서) 사용하는 것에서 이
adsf
@RequestMapping("/handle") public ResponseEntity handle() { URI location = ...; HttpHeaders responseHeaders = new HttpHeaders(); responseHea
인터셉터에 response.sendError(401,"Token이 유효하지 않습니다."); 추가에러 메시지 표시가 안되어서 찾아보니 설정이 따로 필요함 \->application.properties에 server.error.include-message=a
Post post로 연결했기 때문에 Controller에서도 post정보를 받아서 넣어줘야 함application.properties를 src/main/resources/ 아래에 넣어줘야 빌드시 데이터베이스 사용 가능
총 3단계로 보안 해제 절차를 거쳐야 H2-console에 접근 가능
마지막 부분은 데이터베이스의 키워드 또는 예약어를 엔티티 클래스에 사용할때의 이슈를 해결해주는 용도엔티티 클래스의 이름과 컬럼이 백틱(\`)으로 감싸져서 실행되기 때문의 형태로 클래스 내에서 받아올 수 있도록 설정한 후 application.properties파일에 해
드래그하여 복사 가능헤더에서 키에 커서를 두고 붙여넣으면한번에 붙여넣을 수 있음
10초에 한번씩실행매일 오전 1시
예외처리 ExceptionHandler 예시 커스텀 예외 클래스 예시 (FileTypeErrorException) 예외 만들기
Application Programming Interface, API독립적인 어플리케이션 간의 통신을 할 때의 규칙통신의 규칙이자 매개체이며, 규칙에 맞는 url로 요청이 오는 경우 정해진 형식으로 응답을 보내줌.예시) API 명세서업로드중..클라이언트 : 어떤 것이
깃 허브 사용할때 충돌이 생기지 않도록 조심했는데 그냥 풀리퀘스트해놓고 비교하는 식으로 하는게 더 편했다.
오늘은 하루종일 무한 대댓글 구현을 위해 찾아다녔다.그래도 그러는 와중에 여러 문제를 해결했다.대부분은 변수명이 문제이고 이번에도 그랬다.
양쪽 클래스에서 서로 참조하는 경우 순환오류 발생
Table contains physical column name referred to by multiple logical column names다른 클래스에 같은 이름의 엔티티가 있는 경우 \- 클래스명까지 포함하여 구분해줌그외의 경우 \- 자동 생성되는 컬럼명에서
카카오 로그인 오류/포스트맨 환경변수
Spring Boot 2.x 버전application.properties 파일에의 형태로 제한 가능함전역 예외 처리 어노테이션.@ControllerAdvice와 @ResponseBody를 합쳐놓은 어노테이션이므로@ControllerAdvice와 동일한 예외처리를 수행
하지만 우리가 Cascade를 사용할 경우 우리가 단지 N:1, 즉 @ManyToOne 어노테이션의 표현으로만 충분히 매핑이 가능한데도 불구하고 @OneToMany 어노테이션을 활용하고 불필요한 양방향 매핑을 사용하게 된다. 우리가 Cascade 옵션으로 Persi
이 어노테이션은 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성하지만, 인스턴스 멤버의 선언 순서에 영향을 받기 때문에 만약 변수의 순서가 바뀌면 생성자의 입력 값 순서가 바뀔 가능성이 생긴다.즉, 보이지 않는 생성자로 인한 오류가 발생하고 그로 인해 오류의
ERROR CODE를 통한 예외 처리 방법 처럼 오류코드를 만들어서 예외
인스타그램 클론 코딩 중메인 페이지에서 댓글을 좋아요 순으로 2개까지 표시해야해서 jpa에서 제공하는 Top2를 사용이를 이용해 메인 페이지를 가져올 때 쿼리가 굉장히 많이 생김쿼리 dsl을 이용해 해당 기능을 구현하려고 하였음\->써먹기가 너무 어려워서 실패JPQL을
경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것 select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드 where t.name ='팀
프리미티브 타입의 클래스는 기본형으로 자료형이라고도 하며 산술 연산이 가능하고 null값 처리가 안됨디비에서는 래퍼클래스로 인식하여 null이 들어가면 오류가 발생함래퍼 클래스는 Unboxing 하지 않으면 산술연산이 불가능하지만 null값 처리가 가능함
@Transactiona
MVP각 페이지의 핵심 기능
스프링으로 이메일 서비스 들어가기 전에 여기서 우리는 순수 바닐라 스프링 어플리케이션(javaMamil 라이브러리 사용)과 스프링부트 어플리케이션(spring-boot-starter-email dependency 사용)으로 이메일을 보내는 방법을 찬찬히 배워본다.
dto를 쓰는 경우에 dDay와 같이 첫글자만 소문자일 때 값이 null로 들어가는 문제가 발생함.dto를 수정함빌더패턴 사용\->두 방법 다 계속 dDay에 null값이 들어감JavaBeans 는 메서드 이름에서 필드명을 추출할 때 일정한 규칙이 존재.Java Bea
github repository에서 Setting - Secrets-Actions 으로 들어간 후 New repository secret 이후 Value에 application 복사해서 붙여넣기src/main/resources 폴더가 없는 경우 위 이미지와 같은 오류
와 같은 형태의 코드에서 멤버 값 업데이트가 되지 않는 현상이 발생함업데이트 방식 자체는 다른 테이블에서 똑같이 사용하고 있으며 정상작동되는데 여기만 작동하지 않아서 업데이트가 이루어지는 update 아래줄에 sout으로 값을 찍어 확인해보았을때도 값이 들어있어서 이해
인증 과정에서 Access토큰을 통한 개인정보 인증을 만료 이후에 쓰는 것은 불가능하므로 인증을 위해 이메일을 받는 방식을 사용했다.이를 위해 로그인 시에 이메일을 프론트에 넘겨주기도 했었는데 개인정보인 이메일을 통신 과정에 주고받는 것이 문제의 소지가 있다는 피드백을
는 로 짧게 줄일 수 있다.
@RequestParam(required = false)으로 필요한 것만 받기
repository.findby\*\* 등을 사용할 때 optional로 반환하는 함수를 사용할 때, 해당 값은 null을 가질 수 있으므로 null에 대한 처리가 필요하다..orElse를 사용하면 null일 때 대신 넣어줄 값을 정해줄 수 있다. 이때 orElse뒤에
QueryDSL 검색조건 쿼리 . List list = query.from(item) .where(item.name.eq("좋은상품").and(item.price().gt(20000))) .list(item); . whe
맨 왼쪽 로드밸런서 생성이름 설정서브넷과 매핑 \-> 본인의 인스턴스가 있는 지역은 필수적으로 포함하여 2개 이상 선택보안그룹 설정 \-> 포트를 열어둔 보안그룹을 선택타겟그룹 설정\-> 없는 경우 Create target group으로 생성\-> 인스턴스를 선
ACM(AWS Certificate Manager)에서 가지고 있는 도메인 이름으로 요청Route 53에서 도메인 이름으로 호스팅 영역을 구성한다.생성된 호스팅 영역에서 NS값을 알아내고 도메인 서버의 네임서버 설정을 완료한다.\-해당 4값을 모두 넣어주어야 함\-인증
minusMinutes(long minutes) - 인자만큼 분 감소
와 같은 형태로 값을 설정하고의 형태로 해당 enum에 대응하는 값을 받아올 수 있다
로 엔티티를 생성할 수 있다의 형태로 빌더패턴도 사용 가능
배포그룹에서 인스턴스를 선택하는 곳
JPA에서 Native query를 쓸때는 아래와 같이 작성한다.@param을 통해 받아온 값을 쿼리로 넘기고 @param에서 선언한 변수명의 앞에 :를 붙여서 쿼리 내에서 사용함넘기고 싶은 파라미터가 많아지면 @Param을 갯수만큼 써줘야 함많은 파라미터를 넘겨야 하
매핑된 개체를 저장할때 FK가 아직 영속되지 않아 생긴 영속성 전이(CASCADE)에 대한 오류 발생N:1 관계에서 연결된 엔티티 객체를 생성 시 FK가 필수로 필요한데, FK가 될 부모객체가이러한 경우 Member를 영속화 할때, 연관된 Team의 PK가 아직 영속화
^ : 시작$ : 종료범위 : 문자 범위 (범위에 해당하는 문자 하나). : 문자 (공백, 숫자, 영문, 특문 등 의 문자 하나)(?= ) : 긍정형 전방탐색 (positive lookahead) ; 일치하는 문자가 있으면 값이
캘린더를 활용한 날짜 계산
dto는 값을 담아주는 용기같은 역할을 하기 때문에 한 메소드에서 여러번 호출해서 사용해도 됨최대한 재활용 가능하도록 설계해서 사용하면 반복을 줄일 수 있음
해당하는 날짜가 포함되는 주의 시작과 끝/ 월의 시작과 끝을 구하는 코드캘린더를 활용해 시작점을 설정하고 캘린더에서 주와 월의 정보를 얻어서 사용함
지연 로딩에서는 연관된 엔티티가 바로 조회되지 않는다.이는 효율성을 위해서인데 이때 연관된 실제 엔티티객체를 조회하는 대신 사용하는 가짜 객체가 프록시 객체이다.이 프록시 객체는 target이라는 실제 객체의 참조를 보관하고 있다가 호출이 들어오면 실제 객체를 가져옴(
프록시 객체는 처음 사용할때 한번만 초기화프록시 객체가 실제 엔티티로 교체되는 것이 아님초기화가 되면 프록시는 유지되고 내부의 target이 채워지면서 프록시 객체를 통해서 실제 엔티티에 접근 가능프록시 객체는 원본 엔티티를 상속받기 때문에 타입체크시 주의해야한다.me
switch문은 case로 나누어서 사용 가능하고 케이스에 속하지 않는 경우는 default로 처리할 수 있다.
설정을 제대로 했음에도 불구하고 안되는 경우생명주기 실패를 무시하는 설정을 추가이유 : 기존에 사용하던 인스턴스의 경우 codeDeploy에서 기억하고 있던 생명주기를 찾기 때문에 무시하도록 함EC2에 설치한 codeDeploy agent가 먹통이 된 경우이므로 껐다
객체를 생성하지 않고도 Static 자원에 접근이 가능기존방식과 같은 형태로 객체를 생성한 후 사용static와 같이 static 메소드를 사용하면객체 생성 없이 바로 사용 가능
인코딩된 비밀번호를 인코딩되어 저장된 비밀번호와 비교하는 경우위와 같이 패스워드를 인코딩하여 비교하면 결과가 다르다이는 매번 임의의 salt를 사용하여 인코딩하기 때문이다.따라서 비교가 필요할때는이렇게 matches를 사용하여야 함
로 모의 객체를 만들 수 있음
AWS를 통해 이미지 업로드시 멀티파트파일로 받아온다.이 때, 이미지가 아닌 파일을 업로드하거나 너무 큰 파일을 업로드 하는 경우에 서비스에 문제가 발생할 수 있다고 판단하였음.파일 유형의 경우 멀티파트파일에서 내장하고 있는 함수인 getContentType()을 사용
기존 설정에서 요청시에 사용하도록 되어 있음설정을 커스텀하여 풀리퀘스트가 머지된 경우에만 배포를 실행하도록 함테스트 코드가 비어있는 경우에도 test를 실행하고 거기서 성공하지 않아 배포에 실패함설정을 커스텀하여 test단계를 넘어가도록 함imageCodeDeploy에
생성자의 경우 (constructor) 타입만 맞으면 된다. TeamMemberDto의 teamMemberName이 Member 도메인의 userName과 매칭되는 것은 타입이 동일하기 때문setter 메서드를 이용해서 조회하는 방법 (bean)setter 메서드를 이
Jmeter로 조회 성능 테스트 중 속도가 느린 쿼리가 있었음데이터 조회시 조건 탐색을 할 때 테이블을 모두 스캔을 함where절에 index를 적용하여 쿼리 성능을 개선함Index를 적용한 테이블몇 몇 페이지에서 확연한 속도 차이를 보였으나 일부 페이지에서는 약간의
imagemember만 : 12.35start_date만 : 109.61member, start_date : 3.41start_date, member : 102.86imagetodo_list에서member만 : 34.23start_date만 : 113.64member,
단위테스트나 mvc의 경우에는 @Runwith로 실제 클래스나 모키토 클래스를 가져오고 @Mock 어노테이션을 통해 가짜 객체를 만들어 각 단위의 동작을 확인한다통합테스트는 @Autowired를 통해 필요한 실제 클래스를 빈으로 등록해 실제 동작을 확인할 수 있다.
Servlet (서블릿)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말함출처: 위키백과우선 servlet이 호출되면 아래와 같이 doServlce() 메서드가 호출됩니다. doService()의 코드를 쭉 읽다보면 아래에서 doDis
객체 생성 → 의존 설정 → 초기화 → 사용 → 소멸 Bean은 스프링 컨테이너에 의해 생명주기를 관리하며 빈 초기화방법은 @PostConstruct 를 빈 소멸에서는 @PreDestroy 를 사용합니다.생성한 스프링 빈을 등록할 때는 ComponentScan을 이용하
추상클래스는 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용합니다. 단일 상속만 가능합니다. 추상클래스를 상속하는 집합간에는 연관관계가 있습니다.인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용합니다. 다중 상속이 가능합니다. 인터페이스
객체프로그램으로 구현 할 실세계의 어떠한 대상을 가리킨다. 클래스객체를 프로그램으로 구현하려면 세밀히 분석하고 관찰해야 하는데, 이러한 결과를 정리해 놓은 명세서(설계도)이다. 인스턴스명세서(설계도)를 바탕으로 프로그램으로 구현해 놓은 것RESTful이란 REST의 원
⇒ 공통 모듈을 프록시로 만들어서 DI 로 연결된 빈 사이에 적용해 Target의 메소드 호출 과정에 참여애 부가기능(공통 모듈)을 제공해준다. 그렇기의 JDK 와 Spring Container 외에 특별한 기술 및환경을 요구하지 않는다. Advice 가 구현하는 Me
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우,그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.이름,
시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 알고리즘이다.시작 정점을 지나고 나면 깊이가 1인 모든 정점을 방문하고, 그다음에는 깊이가 2인 모든 정점을 방문한다.이런 식으로 한 단계씩 깊이를 더해가며 해당 깊이에 있는 모든
"더 나아갈 길이 보이지 않을 때까지 깊이 들어간다"를 원칙으로 그래프 내의 정점을 방문하는 알고리즘이다.미로 찾기처럼 그래프의 정점을 타고 깊이 들어가다가 더 이상 방문해왔던 정점 말고는 다른 이웃을 갖고 있지 않은 정점을 만나면뒤로 돌아와 다른 경로로 뻗어있는 정점
Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다.연산이 많지 않을때는 특별한 이슈가 발생할 가능성이 거의 없지만, 연산횟수가 많아지거나 멀티스레드, 경쟁 상태(Race Condition) 등의 상황이
: Java 프로그램에서 사용되는 모든 인스턴스 변수가 저장되는 영역. JVM은 Java 프로그램에서 new 키워드를 사용하여 인스턴스가 생성되면, 해당 인스턴스의 정보를 힙 영역에 저장. 메모리의 낮은 주소에서 높은 주소의 방향으로 할당 됨.: Java 프로그램에서
실행 중인 프로그램(program) 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 그리고 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는
: 클래스, 메소드, 변수, 인자를 선언할 때 함께 사용되며 상태를 유지하려는 특징을 가짐.final 변수 → 변경 Xfinal 메소드 → overriding Xfinal 클래스 → 상속 X: try-catch와 함께 사용되며 try-catch가 종료될 때 finall
요소(element)라고 불리는 가변 개수의 객체들의 저장소객체들의 컨테이너라고도 불림고정 크기의 배열을 다루는 어려움 해소다양한 객체를 삽입, 삭제 검색 할 수 있음컬렉션은 제네릭 기법으로 구현됨특정 타입만 다루지 않고 여러 종류의 타입으로 변신할 수 있도록 클래스나
멀티 쓰레드 프로그래밍에서 동기화를 통해 락을 획득하여 동일한 자원을 여러 곳에서 함부로 사용하지 못하도록 함 이는 두 가지 이상의 작업을 왔다갔다 하면서 실행하여 동시에 진행되는 것처럼 멀티 쓰레드를 구현하였기 때문임하지만 두 개의 쓰레드에서 서로가 가지고 있는 락이
Object 클래스java의 모든 클래스의 최상위 부모이다. 자동으로 java.lang.Object 클래스를 상속받으므로 extends 역시 필요 없다.모든 class는 object class의 메서드를 사용할 수 있고, 일부를 overriding 할 수 있음주요 메소
POJO는 말 그대로 순수한 자바 오브젝트를 뜻한다.POJO라는 개념은 예전에 JavaEE등의 중량 프레임워크(특히 EJB) 을 사용하면서 단순한 자바 오브젝트를 사용해서 개발하는 것이 아닌 프레임워크에 종속적인 부분으로 개발을 진행했다.그로 인하여 모듈의 교체, 시스
다익스트라(dijkstra) 알고리즘은 그래프에서 한 정점(노드)에서 다른 정점까지의 최단 경로를 구하는 알고리즘 중 하나이다. 이 과정에서 도착 정점 뿐만 아니라 모든 다른 정점까지 최단 경로로 방문하며 각 정점까지의 최단 경로를 모두 찾게 된다. 매번 최단 경로의
특정 데이터베이스에 종속되지 않음애플리케이션 개발을 위해 데이터베이스로 오라클(Oracle)을 사용하여 개발을 진행했다고 가정해보겠다. 만약 오라클을 오픈소스인 MariaDB로 변경한다면 데이터베이스마다 쿼리문이 다르기 때문에 전체를 수정해야 한다. 따라서 처음 선택한
브라우저에서 어떤 프로토콜, URL, 포트로 요청할 것인지 해석 및 분석명시적으로 포트를 선언하지 않았다면, HTTP는 80, HTTPS는 443의 디폴트 값으로 요청HSTS는 HTTP를 허용하지 않고 HTTPS를 사용하는 연결만 허용하는 기능만약 HTTP로 요청이 왔
순서가 있고 중복을 허용합니다.인덱스로 원소에 접근이 가능합니다.크기가 가변적입니다.양방향 포인터 구조로 데이터 삽입, 삭제가 빠르다.ArrayList보다 검색이 느리다. 단반향 포인터 구조로 데이터 순차적 접근에 강점을 가진다.배열을 기반으로 데이터를 저장한다.데이터
이미 계산된 결과(하위 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 설계함으로써 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법이다.최적 부분 구조(Optimal Substructure)상위 문제를 하위 문제로 나눌 수 있으며 하
HashMap은 Map인터페이스에 속해있는 컬렉션Map 인터페이스의 기본 기능들을 전부 구현가능데이터들은 모두 (키, 값)의 1:1 구조로 되어있는 Entry같은 키의 값을 삽입하면 해당 키의 값이 변경됨키는 고유한 속성이지만 값은 고유하지 않음\-> 즉, 키는 중복이
아파치 메이븐은 자바용 프로젝트 관리 도구아파치 Ant의 대안으로 만들어짐아파치 라이센스로 배포되는 오픈 소스 소프트웨어네트워크를 통해 연관된 라이브러리까지 같이 업데이트를 해주기 때문에 사용이 편리빌드, 프로젝트 구성/관리, 테스트, 배포 도구안드로이드 앱의 공식 빌
JWT는 Token의 한 형식이고, OAuth는 하나의 Framework이다.토큰을 요청할 때 사용해야하는 요청 및 응답의 순서와 형식만 있다.각기 다른 시나리오에서 어떤 방식으로 권한 부여 유형을 사용할지 정한다.OAuth Token이 가지고 있는 정보는 일련의 랜덤
하이퍼미디어를 애플리케이션의 상태를 관리하기 위한 메커니즘으로 사용Hateoas란 REST Api를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것을 의미클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URI를 응답에 포함시켜 반
생성(Creational) 패턴 중 하나로써 객체를 오직 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴 필요할 때마다 똑같은 객체를 매번 생성하지 않고 기존에 생성한 하나의 객체를 활용하도록 하는 디자인 패턴 Singleton
공통으로 포함하는 원소가 없는 두 집합의 관계Union : 서로 다른 두 개의 집합을 병합Find : 원소가 어느 집합에 속해있는지 찾음서로소 집합의 두 연산을 빗대 Union-Find 자료구조라고도 함1\. 집합 생성 및 초기화find 함수집합의 구분은 그 집합의
최소 연결 부분 그래프1\. 정점 N개를 가지는 그래프에서 (N - 1)개의 간선을 연결해야 한다.2\. 연결한 간선의 가중치 합이 가장 최소가 되는 그래프3\. 모든 정점이 연결되어야 하나, 싸이클이 되면 안된다.싸이클이 생기는 경우에는 불필요하게 하나의 간선이 연결
그래프의 모든 정점을 최소 비용으로 연결하는 간선을 구할 때 사용그래프의 간선들을 비용으로 오름차순 정렬정렬된 간선 리스트에서 사이클을 형성하지 않는 간선을 선택find 함수 사용해당 간선을 현재의 MST(최소 비용 신장 트리)의 집합에 추가union 함수 사용2와 3
그래프는 vertex와 edge로 구성된 한정된 자료구조를 의미한다.vertex : 정점edge : 정점과 정점을 연결하는 간선아래는 대표적인 그래프 종류들의 예시다.이러한 그래프는 인접 행렬, 인접 리스트 방식으로 표현할 수 있다.먼저, 행렬로 구현하는 방식을 살펴보
백트래킹(BackTraking) 기법은 해를 찾는 도중에 '막히면' (즉, 해가 아니면) 되돌아가서 다시 해를 찾아 가는 기법이다.이를 가지치기(Prunning)이라고도 하며, 이러한 가지치기를 통해 최적화 (Optimization) 문제와 결정 (decision) 문
위 그림처럼 간선에 가중치가 있고 최소 비용으로 각 정점에 도달하는 방법을 구할 때 사용함DP(Dynamic Programming) 기법을 사용한 알고리즘으로 노드 0개를 거쳐가는 최단거리를 구하고, 노드 1개, 노드 2개...노드 N개를 거쳐가는 최단거리를 '단계적'
프림 알고리즘은 최소신장트리를 찾기 위한 알고리즘step 0) 임의의 정점을 선택하여 비어있는 T에 포함시킨다. (이제 T는 노드가 한 개인 트리. )step 1) T 에 있는 노드와 T 에 없는 노드 사이의 간선 중 가중치가 최소인 간선을 찾는다.step 2) 찾은
피벗을 하나 선택한다.피벗을 기준으로 양쪽에서 피벗보다 큰 값, 혹은 작은 값을 찾는다. 왼쪽에서부터는 피벗보다 큰 값을 찾고, 오른쪽에서부터는 피벗보다 작은 값을 찾는다.양 방향에서 찾은 두 원소를 교환한다.왼쪽에서 탐색하는 위치와 오른쪽에서 탐색하는 위치가 엇갈리지
분할 정복 (Devide and Conquer) 기법과 재귀 알고리즘을 이용한 정렬 알고리즘 주어진 배열을 원소가 하나 밖에 남지 않을 때까지 계속 둘로 나눈 후에 다시 크기 순으로 재배열하여 합침전반적인 반복의 수는 점점 절반으로 줄어들기 때문에 O(logN) 시간이
선택정렬 크기 n의 배열이 주어졌을 때, index 0부터 n-1까지의 모든 index i에 대해서, i번째 부터 n-1 번째까지 값 중 가장 작은 값을 찾아 index i에 놓는 방식의 정렬 모든 index에 대해서 그 index에 위치시킬 값을 “선택”하기 때문에
데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위상태 변화= SQL 질의어를 통해 DB에 접근하는 것작업 단위= SQL 명령문들을 사람이 정하는 기준에 따라 정함이 모든 과정을 하나의 트랜잭션이라고 할 수 있다.위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의
기능을 1. 핵심 관심 사항(Core Concern)과 2. 공통 관심 사항(Cross-Cutting Concern)으로 분리시키고 각각을 모듈화 하는 것을 의미핵심 기능(Core Concern) - 업무 로직을 포함하는 기능부가 기능(Cross-Cutting Conc
트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준데이터베이스는 ACID 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다.따라서 Locking을 통해, 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하도록 막는 것이 필요하다.하지만 무조건 Lockin
이진 트리의 구조를 갖고 있으면서 자료의 검색,삭제,삽입,정렬 등을 효율성을 갖는 트리 자료구조이진 탐색을 보다 쉽게 효과적으로 구현할 수 있게 함최대값과 최소값을 쉽게 찾을 수 있음삽입,삭제시에, 올바른 위치를 찾아 곧바로(빠르게) 넣거나 뺄 수 있음배열의 경우에는,
뒤에서 부터 앞으로 정렬을 해나가는 방식으로 첫번째 값부터 시작해서 다음 값들과 차례로 비교하면서 가장 큰 값 부터 맨 뒤에 쌓아나감거품 정렬은 점점 큰 값들을 뒤에서 부터 앞으로 하나씩 쌓여 나가게 때문에 후반으로 갈수록 정렬 범위가 하나씩 줄어들게 됨제일 작은 값을
데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다.무결성을 지키고, 이상 현상을 방지한다.테이블 구성을 논리적이고 직관적으로 할 수 있다.데이터베이스 구조 확장에 용이해진다.도메인 원자값 (1NF)부분적 함수 종속 제거 (2NF)이행적 함수 종속 제거 (3NF)결
선택 정렬, 거품 정렬과 더불어 대표적인 O(N^2) 정렬 알고리즘정렬 범위를 1칸씩 확장해나가면서 새로운 값을 기존 값들과 비교하여 알맞은 자리에 삽입하는 방식선택/거품 정렬은 패스가 거듭될 수록 탐색 범위가 줄어드는 반면 점점 정렬 범위가 넓어짐1\. 공간 복잡도
정의 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 목적 어떤 기술이든 그 자체로는 도구에 불과하며 용도에 맞게 잘 활용해서 궁극적으로 이루고자 하는 목표를 이루는 것이 중요합니다. 스프링의 목적은 엔터프라이즈 어플리케이션 개발을 편하게하는것
스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드와 POJO가 어떻게 관계를 맺고 동작하는 지를 정의해놓은 설계 정보로 구분된다. DI의 기본 아이디어는 유연하게 확장 가능한 오브젝트를 만들어두고 그 관계는 외부에서 다이나믹하게 설정해준다는 것이다. 이런
\->직접 의존성을 만들어서 사용하며 의존성의 제어는 해당 클래스에 있음제어의 역전직접 의존성을 생성하지 않고 주입받음.객체를 사용하는 class 내부의 생성자에서 해당 객체를 생성하지 않고 주입받아 사용한다.이것을 DI(Dependency Injection) 이라고
관점 지향 프로그래밍, 어떤 프로그램에서 부가적인 기능들을 분리해 분리된 기능의 관점에서 기능을 모듈화 하여 설계 및 개발하는 것핵심 기능과 부가적인 기능들이 분리되어 있기 때문에 핵심 기능의 수정 없이 쉽게 부가 기능을 붙이거나 수정할 수 있고 코드의 재사용성을 높일
각 클래스에 핵심기능은 가운데의 test1, 2, 3임여기서 AAA가 바뀌어야하는 경우 3군데를 모두 바꾸어 주어야 함따라서, 부가적인 기능들(AAA,BBB)을 분리해 모듈화하면 핵심 기능과 부가적인 기능들이 분리되어 있기 때문에 핵심 기능의 수정 없이 쉽게 부가 기능
@Transactional 등의 어노테이션을 붙이면 별도의 코드 추가 없이 트랜잭션 서비스를 사용할 수 있는 것은 내부적으로 트랜잭션 코드가 추상화되어 있기 때문이렇게 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 서비스 추상화라
힙은 Complete Binary Tree(완전 이진 트리) 이다.모든 노드에 저장된 값(우선순위)들은 자식 노드들의 것보다 (우선순위가) 크거나 같다.※ 직접 연결된 자식-부모 노드 간의 크기만 비교하면 됨따라서 힙은 루트 노드에 우선순위가 높은 데이터를 위치시키는
들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조배열삽입해야 하는 위치를 찾기 위해 최악의 경우 모든 인덱스를 탐색해야 함→ 배열로 구현 시 시간 복잡도 : 삭제는 O(1), 삽입은 O(n)연결리스트삽입의 과정에서 그 위치를 찾아야 하므로 최악의 경
메서드를 호출할 때 파라미터를 전달하는 방법Call by Value 는 메서드를 호출할 때 값을 넘겨주기 때문에 Pass by Value 라고도 함메서드를 호출하는 호출자 (Caller) 의 변수와 호출 당하는 수신자 (Callee) 의 파라미터는 복사된 서로 다른 변
정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법정렬된 배열을 사용함변수 3개(start, end, mid)를 사용하여 탐색하며 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 탐색n개의 데이터를 가진 정렬된
Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩인코딩, Encoding 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는
OSI 7계층은 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉨.전송 시 7계층에서 1계층으로 각각의 층마다 인식할 수 있어야 하는 헤더를 붙임(캡슐화)수신 시 1계층에서 7계층으로 헤더를 떼어냄(디캡슐화)출발지에서 데이터가 전송될 때 헤더가 추가
신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜일반적으로 IP와 함께 사용되며 IP가 데이터의 전송을 처리할때, TCP는 패킷 추적 및 관리연결 지향형인 TCP는 3-way handshaking을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원
비연결형 프로토콜보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜연결 설정이 없으며, 혼잡 제어를 하지 않음데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있음비연결형 서비스로 데이터그램 방식을 제공비신뢰성데이터의 경계를 구분패킷 오버해드가
Interceptor와 Filter는 Servlet 단위에서 실행반면 AOP는 메소드 앞에 Proxy패턴의 형태로 실행실행순서를 보면 Filter가 가장 밖에 있고 그 안에 Interceptor, 그 안에 AOP가 있는 형태따라서 요청이 들어오면 Filter → Int
Transaction 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영Transaction CommitEntityManager FlushJPQL 사용영속성 컨택스트(Persistence Context) 안에 있는 엔티티Service Layer에
3-Way Handshake - TCP의 접속,4-Way Handshake - TCP의 접속 해제 과정이다.CLOSED: 포트가 닫힌 상태LISTEN: 포트가 열린 상태로 연결 요청 대기 중SYN_RCV: SYNC 요청을 받고 상대방의 응답을 기다리는 중ESTABLIS
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 함TC
4-Way Handshake은 연결을 해제 (Connecntion Termination)하는 과정FIN 플래그를 이용FIN (finish) : 세션을 종료시키는데 사용되며, 더 이상 보낸 데이터가 없음을 나타낸다.TCP는 대부분의 connection-oriented 프
헤더(header), 내용(payload), 서명(signature)로 구성헤더는 typ와 alg 두가지의 정보를 지니고 있습니다. typ는 토큰의 타입을 지정합니다. JWT이기에 "JWT"라는 값이 들어갑니다. alg : 해싱 알고리즘을 지정Payload 부분에는 토
배열과 링크드 리스트의 차이 배열은 메모리상에 순서대로 데이터를 저장합니다. 반면 링크드 리스트는 다음 데이터의 위치에 대한 포인터를 가지고 있는 구조입니다. 배열은 데이터를 인덱스로 조회할 수 있기 때문에 인덱스 조회성능이 높고, 데이터가 메모리에 순서대로 저장되어
추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여다른 출처간의 리소스를 공유를 의미동일출처정책 (SOP, same-origin-policy) 해당 출처에서 불러온 문서나 스크립트가 다른 출처
함수명이 고유한 C언어는 하나의 함수가 하나의 기능만을 구현해야 함반면, 자바에서는 하나의 메소드 이름으로 여러 기능을 구현 가능한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의가능메소드의 이름
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위해 데이터와 데이터의 위치를 포함한 자료구조를 생성한 것DBMS는 index를 항상 최신의 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있음인덱스가 적용된 컬럼에 INSE
해시 테이블, Hash Table(Key, Value)의 형태로 데이터를 저장하는 자료구조빠른 데이터 검색이 필요할 때 유용(데이터=컬럼의 값, 데이터의 위치)를 (Key, Value)로 사용하여 컬럼의 값으로 생성된 해시를 통해 인덱스를 구현해시 테이블의 시간복잡도는
와 같이 else가 어떤 if와 연관되는지 불분명한 경우를 말함if-else if-else 사용괄호와 들여쓰기를 통해 확실히 구분해줌
데이터 추가, 데이터 확인, 데이터 변경head와 tail 위치에 데이터 추가offer(), offerFirst() / offerLast()와 같으나 return 타입이 다름add메소드는 void, offer 메소드는 boolean 타입 반환데이터 추가 시 발생할 수
Comparator 람다식
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조LIFO 즉, 가장 최근에 스택에 추가한 항목이 가장 먼저 제거pop(): 스택에서 가장 위에 있는 항목을 제거push(item): item 하나를 스택의 가장 윗 부분
해당 item을 Stack의 top에 삽입Vector의 addElement(item)과 동일Stack의 top에 있는 item을 삭제하고 해당 item을 반환Stack의 top에 있는 item을 삭제하지않고 해당 item을 반환Stack이 비어있으면 true를 반환 그
그래프는 노드(하나의 점)와 노드 간을 연결하는 간선으로 구성된 자료 구조연결된 노드 간의 관계를 표현할 수 있음그래프는 순환 혹은 비순환 구조그래프는 방향이 있는 그래프와 방향이 없는 그래프로 나뉨루트 노드 / 부모-자식 관계 없음2개 이상의 경로가 가능(무방향, 방
특정 컬럼을 그룹화할 때 사용여러 컬럼을 그룹화 할 때는 , 로 구분HAVING GROUP BY 결과에 조건을 걸 때 사용WHERE 그룹화 하기 전의 결과에 조건을 걸 때 사용즉 WHERE > GROUP BY > HAVING
TRUNCATE(숫자,N)N은 자릿수를 의미함양수인 경우 소수점 n번째 자리까지 표시하고 나머지 버림truncate(12.345,2) 인 경우 12.34을 얻을 수 있음음수인 경우 10^n까지 표시하고 나머지 버림truncate(12345,-4) 인 경우 10000을
if(조건,참일때의 결과,거짓일때의 결과)ifnull(null체크할 값, null일때의 값
왼쪽의 테이블을 기준으로, 오른쪽의 테이블과 비교하여 조건에 맞는 값이 있으면 JOIN하여 가져오고, 값이 없으면 null 값을 표시왼쪽인 ANIMAL_OUTS에만 있는 데이터를 찾아야 함on 절에서 두 테이블의 ANIMAL_ID가 같은 것을 기준으로 LEFT OUTE
GROUP BY 절 사용하기 중복값이 존재하는지 확인하고 싶은 열을 기준으로 GROUP BY를 실행HAVING절 안에 COUNT 함수 사용하기 GROUP BY를 통해 그룹핑된 값의 개수가 2개 이상인지 확인
두 테이블 간 필드 이름이 같은 경우에 사용 가능하며 join시 동일한 필드의 값을 한번만 가져옴보통은 컬럼명이 달라서 사용하기 어렵지만 약간 성능 개선이 가능함
GROUP BY와의 차이점1\. 집계된 값을 반환하면서 원래 행에 있었던 값을 함께 볼 수 있음2\. PARTITION BY는 OVER()와 윈도우 함수와 함께 사용됨윈도우 함수
DATE_FORMAT(날짜 , 형식) : 날짜를 지정한 형식으로 출력
https://school.programmers.co.kr/learn/courses/30/lessons/12920
intensity의 최솟값을 찾기 때문에 일반적인 다익스트라에서 갱신하는 부분을 최솟값 찾기로 바꿈
각 구간의 시작 지점에서 트래픽의 양이 변하기 때문에 구간 시작점을 기준으로 계산하면 시간복잡도를 줄일 수 있음전체 코드https://school.programmers.co.kr/learn/courses/30/lessons/17676
행렬의 최적 곱셈 방법을 찾기 위해서 먼저 dp행렬에 큰 값을 넣어주고 점화식에 따라 최솟값을 찾아줌한번에 계산하는 것과 나누어 계산(결합)하였을때의 값을 비교
0번 인덱스를 내림차순 정렬하고 같은 경우엔 1번 인덱스 내림차순 정렬
1. 약수의 개수 구하기 전체코드
1. 포화 이진 트리를 만들어 주고 dfs호출 2. 루트 노드를 찾고 표현 가능 여부를 dfs 전체코드
직선 경로로 움직이고 이동수가 남을때 rl을 반복해주면 조건을 충족할 수 있음전체코드
어떤 수학적 연산 또는 알고리즘에 의해 원본 데이터를 매핑시켜 완전히 다른 암호화된 데이터로 변환시키는 것ex) SHA, MD, HAS, WHIRLPOOL 등동일한 메시지는 동일한 다이제스트를 갖기 때문에 여러 값들을 대입하여 다이제스트들을 얻어 메시지의 원문을 찾을
전형적인 DFS문제
트리 혹은 그래프에서 노드를 깊이 우선 탐색하는 알고리즘노드를 방문한 후, 그 노드에 연결된 모든 노드를 방문하기 전에 방문하지 않은 인접한 노드를 깊이 탐색리스트나 스택을 이용해 그래프나 트리를 표현visited 배열을 통해 방문한 노드를 기록
시간이나 공간적인 제약이 있는 경우, 데이터 스트림을 효율적으로 처리하기 위한 알고리즘고정 크기의 윈도우를 이동시켜 각 윈도우의 데이터를 처리하는 방식데이터를 적은 비용으로 처리각 윈도우의 데이터 처리를 유지하는 동시에 메모리 사용량을 최소화 가능예시
양쪽 끝에서 삽입/삭제가 가능한 자료구조자바에서 Deque 인터페이스는 java.util 패키지에서 제공구현 클래스는 LinkedList, ArrayDeque 등LinkedList 클래스는 링크드 리스트 기반으로 구현되어 빠른 중간 삽입/삭제 속도를 제공하지만, 느린
효율적으로 항목을 분리된 집합으로 그룹화하는 것을 다루는 알고리즘유니온 파인드(Union-Find) 또는 디스조인트-세트(Disjoint-Set) 데이터 구조를 사용하여 효율적인 해결이 가능union 연산은 두 집합을 하나의 집합으로 합침find 연산은 주어진 항목이
dp를 이용한 풀이
그래프 검색 문제에 사용되는 효율적인 알고리즘목적지까지의 예상 거리(heuristic cost)를 고려하여 경로를 탐색경로 탐색 과정에서 각 노드의 총 비용(total cost)을 계산하여, 목적지에 도달할 때까지 가장 낮은 비용을 갖는 노드를 선택예상 거리 - 현재
BFS - 가장 가까운 이웃 노드부터 탐색DFS - 가장 깊은 깊이에 있는 노드부터 탐색BFS - 큐를 사용DFS - 스택을 사용DFS - 탐색 깊이가 깊어질수록 메모리 사용량 증가BFS - 스택에 노드를 쌓아가면서 메모리 사용량 증가BFS - 최단 경로 계산, 너비
벨만포드(Bellman-Ford) 알고리즘 그래프 최단 경로 구하는 알고리즘 하나의 정점에서 출발하는 최단 거리를 구함(출발지만 정함) 음수 사이클 없어야 함(음수 가중치 허용) O(nm) 시간 복잡도 가짐 동적 계획법 사용, relaxation 기법 최단 거리 구하는 알고리즘에서 출발지 하나를 고르는 것은 다익스트라와 같다. 다익스트라와 벨만-포드의...
동시성은 여러 작업이 겹치는 기간에 실행될 수 있음동시에 실행하는 것이 아니라 CPU가 작업마다 시간을 분할해 적절하게 context switching을 해서 동시에 실행되는 것처럼 보이게 함유휴 시간을 최소화하기 위함같은 시간에 같은 자원에 접근하는 상황에 대비해 해
자바 8부터 추가된 Stream API는 컬렉션, 배열 등의 데이터 소스를 다룰 수 있는 기능을 제공함Stream은 함수형 프로그래밍을 지원하며, 여러 메소드 체인을 이용하여 손쉽게 데이터 처리를 할 수 있음Stream API를 사용하면 루프를 통한 반복 작업을 줄일
Arrays.stream 메서드를 사용하여 int 값 스트림을 만들어 줌mapToObj 메서드 및 String::valueOf 메서드 참조를 사용하여 String 값에 매핑toArray 메서드를 사용하여 Stream을 String\[] 배열로 변환
해시맵과 해시셋은 자바에서 해시 함수를 사용하여 데이터를 저장하고 검색하는 해시 기반 데이터 구조키-값 쌍을 저장하는 컬렉션 클래스각 키가 고유한 값에 매핑되는 키를 기반으로 데이터를 저장하고 검색해시 코드를 사용하여 데이터를 인덱싱하므로 대부분의 작업에 대해 일정한
dp를 사용원형이므로 각 배열의 0번 인덱스를 다르게 초기화하여 첫번째 집을 터는 경우 dp1 털지 않는 경우를 dp2으로 설정
조건에 맞는 경우 직접 구하기 - deque 사용조건에 맞는 경우 직접 구하기 - dfs 사용괄호의 성질(카탈란 수)을 이용한 dp
숫자가 커지는 경우 오버플로우가 날 수 있으므로 long 배열을 사용함
최종 결과값이 주어지고 규칙이 주어졌으므로 dfs를 이용해 역으로 가능한 조합을 재귀를 통해 찾아가는 방식을 사용함
이분탐색을 이용해 쿼리의 최대값과 최솟값을 찾는 방식으로 해당하는 갯수를 구함
putIfAbsent()computeIfAbsent()compute()computeIfPresent()merge()getOrDefault()key의 존재 여부에 따라서 새로운 key와 value 값을 추가하는 메서드key : Map의 key 값value : value
중복이 없으므로 정렬 후 인접한 값을 비교함으로써 답을 구할 수 있음
public static int solution(int n, int edges) { List[] adjList = buildAdjacencyList(n, edges); int[] distances = bfs(adjList, 1, n); int s
public static boolean solution(int n, int path, int order) { List> graph = buildGraph(n, path); return canSearchAllRooms(n, graph, order); } private static boolean canSearchAllRooms(int n, Li...
public static boolean solution(int n, int path, int order) { List> graph = buildGraph(n, path); return canSearchAllRooms(n, graph, order); } private static boolean canSearchAllRooms(int n, Li...
public static final int MOD = 10000019; public static int solution(int a) { int row = a.length; int col = a[0].length; int combis = new introw + 2; combis0 = 1; for (int i = 1; ...
이 때, 오버플로우를 방지하기 위해와 같이 long으로 변환하여 계산 후 모듈러 연산을 해주고 다시 int로 변환해줌
출처:https://school.programmers.co.kr/learn/courses/30/lessons/133500
출처:https://school.programmers.co.kr/learn/courses/30/lessons/172927
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86052
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42860
출처:https://school.programmers.co.kr/learn/courses/30/lessons/176962
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92345
dfs를 이용하고 1차원 배열만으로 조건을 판별함출처:https://school.programmers.co.kr/learn/courses/30/lessons/12952
출처:https://school.programmers.co.kr/learn/courses/30/lessons/169198
1로 시작한 비트열이 단계마다 1은 11011, 0은 00000으로 확장되는 형태각 단계는 11011이 확장된 형태이므로 최종 단계 n부터 시작하여 아랫 단계로 내려가면서 동일한 방식으로 셀 수 있음따라서 n단계에서 부터 인덱스에 해당하는 구간의 1의 갯수를 구하는 메
출처:https://school.programmers.co.kr/learn/courses/30/lessons/169199
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1835
자바에서는 주어진 대로 int로 반환할 경우 16-20 케이스 에러가 발생함long으로 바꾸면 통과가능출처:https://school.programmers.co.kr/learn/courses/30/lessons/150369
점화식에 - 연산이 포함되어 있어 와 같이 모듈러 연산의 분배법칙을 활용하였음
출처:https://school.programmers.co.kr/learn/courses/30/lessons/152996
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131130
출처:https://school.programmers.co.kr/learn/courses/30/lessons/181187
출처:https://school.programmers.co.kr/learn/courses/30/lessons/181188
출처:https://school.programmers.co.kr/learn/courses/30/lessons/160585
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1829
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12905
출처:https://school.programmers.co.kr/learn/courses/30/lessons/154540
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87377
출처:https://school.programmers.co.kr/learn/courses/30/lessons/142085
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12923
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42890
출처:https://school.programmers.co.kr/learn/courses/30/lessons/159993
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150368
스프링 IoC 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 메소드 호출 → 사용 → 소멸 전 콜백 메소드 호출 → 스프링 종료스프링 IoC컨테이너가 생성되면 Component-Scan으로 Bean을 등록IoC컨테이너에서 의존성을 주입스프링은 Be
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92342
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72412
출처:https://school.programmers.co.kr/learn/courses/30/lessons/147354
출처:https://school.programmers.co.kr/learn/courses/30/lessons/135807
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60057
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12946
출처:https://school.programmers.co.kr/learn/courses/30/lessons/155651
출처:https://school.programmers.co.kr/learn/courses/30/lessons/148653
출처:https://school.programmers.co.kr/learn/courses/30/lessons/62048
출처:https://school.programmers.co.kr/learn/courses/30/lessons/140107
출처:https://school.programmers.co.kr/learn/courses/30/lessons/81302
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12978
factorialNumber를 int로 선언하는 경우 효율성 1,2,4,5 에서 런타임 에러가 발생하므로 long으로 선언해줌출처:https://school.programmers.co.kr/learn/courses/30/lessons/12936
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86971
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77485
출처:https://school.programmers.co.kr/learn/courses/30/lessons/67257
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60058
출처:https://school.programmers.co.kr/learn/courses/30/lessons/178870
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17683
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42883
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72411
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118667
adf
d
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12899
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68645
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68936
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42839
출처:https://school.programmers.co.kr/learn/courses/30/lessons/132265
출처:https://school.programmers.co.kr/learn/courses/30/lessons/154538
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12900
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77885
출처:https://school.programmers.co.kr/learn/courses/30/lessons/154539
출처:https://school.programmers.co.kr/learn/courses/30/lessons/84512
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17679
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17686
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49993
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49994
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12913
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92341
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42626
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17687
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17684
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42888
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92335
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42577
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131127
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42578
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87390
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17677
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131701
출처:https://school.programmers.co.kr/learn/courses/30/lessons/138476
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12914
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12980
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42885
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12985
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42842
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12981
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12973
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12951
출처:https://school.programmers.co.kr/learn/courses/30/lessons/181186
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1837
출처:https://school.programmers.co.kr/learn/courses/30/lessons/136797
출처:https://school.programmers.co.kr/learn/courses/30/lessons/136797
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86053
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118668
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1836
출처:https://school.programmers.co.kr/learn/courses/30/lessons/161988
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12945
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12941
출처:https://school.programmers.co.kr/learn/courses/30/lessons/133502
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1833
출처:https://school.programmers.co.kr/learn/courses/30/lessons/172928
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92334
출처:https://school.programmers.co.kr/learn/courses/30/lessons/178871
출처:https://school.programmers.co.kr/learn/courses/30/lessons/161990
출처:https://school.programmers.co.kr/learn/courses/30/lessons/64061
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118666
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150370
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150366
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131703
출처:https://school.programmers.co.kr/learn/courses/30/lessons/155652
출처:https://school.programmers.co.kr/learn/courses/30/lessons/160586
출처:https://school.programmers.co.kr/learn/courses/30/lessons/140108
출처:https://school.programmers.co.kr/learn/courses/30/lessons/133499
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131128
출처:https://school.programmers.co.kr/learn/courses/30/lessons/136798
출처:https://school.programmers.co.kr/learn/courses/30/lessons/161989
출처:https://school.programmers.co.kr/learn/courses/30/lessons/135808
출처:https://school.programmers.co.kr/learn/courses/30/lessons/159994
출처:https://school.programmers.co.kr/learn/courses/30/lessons/138477
출처:https://school.programmers.co.kr/learn/courses/30/lessons/176963
출처:https://school.programmers.co.kr/learn/courses/30/lessons/132267
출처:https://school.programmers.co.kr/learn/courses/30/lessons/134240
출처:https://school.programmers.co.kr/learn/courses/30/lessons/142086
출처:https://school.programmers.co.kr/learn/courses/30/lessons/147355
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131705
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12969
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12950
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12918
출처:https://school.programmers.co.kr/learn/courses/30/lessons/82612
출처:https://school.programmers.co.kr/learn/courses/30/lessons/70128
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12903
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86051
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12948
출처:https://school.programmers.co.kr/learn/courses/30/lessons/76501
java.util.Random 클래스는 난수를 생성하는 데 사용됨Random 클래스의 객체를 생성하여 난수를 활용할 수 있음의사난수난수를 만들 수 없는 컴퓨터 등에서 난수를 사용하기 위해서 만들어진 수열Random은 시드(seed)라는 '기준이 되는 값'이 존재함위와
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12919
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12912
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12916
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131702
출처:https://school.programmers.co.kr/learn/courses/30/lessons/132265
java.util.Random 클래스의 ints 메서드는 난수를 생성하는 메서드로 다양한 형태로 오버로드되어 있어 다양한 난수 생성 시나리오에 사용됨이 형태의 ints 메서드는 무한한 난수 스트림을 생성함Random.ints().limit(10)와 같이 사용하면 해당
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77885
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87946
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17683
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49993
출처:https://school.programmers.co.kr/learn/courses/30/lessons/155652
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12909
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12952
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43162
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1835
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92345
출처:https://school.programmers.co.kr/learn/courses/30/lessons/154540
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68937
출처:https://school.programmers.co.kr/learn/courses/30/lessons/169199
출처:https://school.programmers.co.kr/learn/courses/30/lessons/132266
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87694
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49189
출처:https://school.programmers.co.kr/learn/courses/30/lessons/67260
출처:https://school.programmers.co.kr/learn/courses/30/lessons/159993
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86971
static 키워드를 사용한 변수나 메소드는 클래스가 메모리에 올라갈 때 자동으로 생성클래스 로딩이 끝나면 별도의 인스턴스(객체) 생성 없이 바로 사용 가능모든 객체가 메모리를 공유함GC 관리 영역 밖에 있기 때문에 프로그램이 종료될 때까지 메모리에 값이 유지된 채로
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1829
출처:https://school.programmers.co.kr/learn/courses/30/lessons/81302
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12946
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72412
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72411
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68936
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131130
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150368
출처:https://school.programmers.co.kr/learn/courses/30/lessons/135807
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60058
출처:https://school.programmers.co.kr/learn/courses/30/lessons/148652
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42890
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92342
출처:https://school.programmers.co.kr/learn/courses/30/lessons/176962
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42587
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118670
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42891
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118667
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42586
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42583
출처:https://school.programmers.co.kr/learn/courses/30/lessons/64063
출처:https://school.programmers.co.kr/learn/courses/30/lessons/155651
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1833
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150366
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92344
출처:https://school.programmers.co.kr/learn/courses/30/lessons/140105
출처:https://school.programmers.co.kr/learn/courses/30/lessons/64065
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12971
출처:https://school.programmers.co.kr/learn/courses/30/lessons/70130
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17678
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72413
출처:https://school.programmers.co.kr/learn/courses/30/lessons/70129
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68646
출처:https://school.programmers.co.kr/learn/courses/30/lessons/152995
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1832
출처:https://school.programmers.co.kr/learn/courses/30/lessons/76502
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12987
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12911
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12949
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77486
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77886
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150365
출처:https://school.programmers.co.kr/learn/courses/30/lessons/76503
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87377
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12904
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60059
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12953
출처:https://school.programmers.co.kr/learn/courses/30/lessons/67258
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60061
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60062업로드중..
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72414
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42893
출처:https://school.programmers.co.kr/learn/courses/30/lessons/81303
출처:https://school.programmers.co.kr/learn/courses/30/lessons/64062
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49995
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43163
출처:https://school.programmers.co.kr/learn/courses/30/lessons/134239
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17676
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12907
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17680
출처:https://school.programmers.co.kr/learn/courses/30/lessons/67259
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12979
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1830
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42894
출처:https://school.programmers.co.kr/learn/courses/30/lessons/138475
출처:https://school.programmers.co.kr/learn/courses/30/lessons/169198
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12938
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42746
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17686업로드중..
출처:https://school.programmers.co.kr/learn/courses/30/lessons/181188
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42747
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17685
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131127
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43164
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92343
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12899
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17687
출처:https://school.programmers.co.kr/learn/courses/30/lessons/154539
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131704
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43165
출처:https://school.programmers.co.kr/learn/courses/30/lessons/150367
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1831
출처:https://school.programmers.co.kr/learn/courses/30/lessons/64064
출처:https://school.programmers.co.kr/learn/courses/30/lessons/84021
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60063
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1844
출처:https://school.programmers.co.kr/learn/courses/30/lessons/72415
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87391
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42897
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12929
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12942
출처:https://school.programmers.co.kr/learn/courses/30/lessons/131129
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118668
출처:https://school.programmers.co.kr/learn/courses/30/lessons/118669
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42892
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12920
https://school.programmers.co.kr/learn/courses/30/lessons/84512
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1838
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60057
출처:https://school.programmers.co.kr/learn/courses/30/lessons/172927
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86052
출처:https://school.programmers.co.kr/learn/courses/30/lessons/181187
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42839
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12984
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43236
출처:https://school.programmers.co.kr/learn/courses/30/lessons/60060
key의 값이 없으면 compute()를 해서 채워주는 메소드첫 번째 전달 인자는 key이고, 두 번째 전달 인자는 연산을 수행할 람다식리턴 값은 key의 값이 존재하면 해당 key의 값을 반환해주고, 해당 key의 값이 없으면 람다식을 수행하고 나온 결과 값을 반환내
출처:https://school.programmers.co.kr/learn/courses/30/lessons/43238
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42861
https://school.programmers.co.kr/learn/courses/30/lessons/42860
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42883
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42884
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42898
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42579
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92341
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42578
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17684
출처:https://school.programmers.co.kr/learn/courses/30/lessons/138476
출처:https://school.programmers.co.kr/learn/courses/30/lessons/152996
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42577
출처:https://school.programmers.co.kr/learn/courses/30/lessons/49994
출처:https://school.programmers.co.kr/learn/courses/30/lessons/142085
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42627
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42628
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12927
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42626
출처:https://school.programmers.co.kr/learn/courses/30/lessons/62050
시간 복잡도 O(n^2)출처:https://school.programmers.co.kr/learn/courses/30/lessons/131701
출처:https://school.programmers.co.kr/learn/courses/30/lessons/178870
출처:https://school.programmers.co.kr/learn/courses/30/lessons/17679시간 복잡도 O(n^2)
출처:https://school.programmers.co.kr/learn/courses/30/lessons/67257
https://school.programmers.co.kr/learn/courses/30/lessons/17677
출처:https://school.programmers.co.kr/learn/courses/30/lessons/87390
출처:https://school.programmers.co.kr/learn/courses/30/lessons/42888
출처:https://school.programmers.co.kr/learn/courses/30/lessons/77485
출처:https://school.programmers.co.kr/learn/courses/30/lessons/147354
출처:https://school.programmers.co.kr/learn/courses/30/lessons/68645
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12980
출처:https://school.programmers.co.kr/learn/courses/30/lessons/92335
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12936
출처:https://school.programmers.co.kr/learn/courses/30/lessons/140107
출처:https://school.programmers.co.kr/learn/courses/30/lessons/62048
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12923
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250136
출처:https://school.programmers.co.kr/learn/courses/30/lessons/258707
출처:https://school.programmers.co.kr/learn/courses/30/lessons/258705
출처:https://school.programmers.co.kr/learn/courses/30/lessons/258711
출처:https://school.programmers.co.kr/learn/courses/30/lessons/214289
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250135
출처:https://school.programmers.co.kr/learn/courses/30/lessons/258709업로드중..
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250134
출처:https://school.programmers.co.kr/learn/courses/30/lessons/258712
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250137
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250121
출처:https://school.programmers.co.kr/learn/courses/30/lessons/250125
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12954
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1839?language=java
출처:https://school.programmers.co.kr/learn/courses/30/lessons/81305
출처:https://school.programmers.co.kr/learn/courses/30/lessons/1834
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86054
출처:https://school.programmers.co.kr/learn/courses/30/lessons/214288
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12925출처:https://school.programmers.co.kr/learn/courses/30/lessons/12944
출처:https://www.acmicpc.net/problem/23971
출처:https://www.acmicpc.net/problem/5073
출처:https://www.acmicpc.net/problem/15989
출처:https://www.acmicpc.net/problem/2292
출처:https://www.acmicpc.net/problem/1157
출처:https://www.acmicpc.net/problem/11723
출처:https://www.acmicpc.net/problem/9655
출처:https://www.acmicpc.net/problem/2252
출처:https://www.acmicpc.net/problem/10431
출처:https://www.acmicpc.net/problem/8979
출처:https://www.acmicpc.net/problem/7568
출처:https://www.acmicpc.net/problem/4659
출처:https://www.acmicpc.net/problem/25757
출처:https://www.acmicpc.net/problem/20125
출처:https://www.acmicpc.net/problem/20125
출처:https://www.acmicpc.net/problem/1205
출처:https://www.acmicpc.net/problem/1244
출처:https://www.acmicpc.net/problem/9017
출처:https://www.acmicpc.net/problem/17266
출처:https://www.acmicpc.net/problem/2164
출처:https://www.acmicpc.net/problem/13305
출처:https://www.acmicpc.net/problem/20920
출처:https://www.acmicpc.net/problem/2512
출처:https://www.acmicpc.net/problem/21921
출처:https://www.acmicpc.net/problem/1515
출처:https://www.acmicpc.net/problem/19941
출처:https://www.acmicpc.net/problem/17484
출처:https://www.acmicpc.net/problem/2607
출처:https://www.acmicpc.net/problem/3758
출처:https://www.acmicpc.net/problem/20310
출처:https://www.acmicpc.net/problem/19637
출처:https://www.acmicpc.net/problem/22233
출처:https://www.acmicpc.net/problem/1927
출처:https://www.acmicpc.net/problem/20006
출처:https://www.acmicpc.net/problem/11501
출처:https://www.acmicpc.net/problem/1406
출처:https://www.acmicpc.net/problem/2304
출처:https://www.acmicpc.net/problem/2075
출처:https://www.acmicpc.net/problem/1138
출처:https://www.acmicpc.net/problem/1260
출처:https://www.acmicpc.net/problem/14940
출처:https://www.acmicpc.net/problem/20922
출처:https://www.acmicpc.net/problem/1446
출처:https://www.acmicpc.net/problem/17615
출처:https://www.acmicpc.net/problem/2531
출처:https://www.acmicpc.net/problem/1522
출처:https://www.acmicpc.net/problem/13549
출처:https://www.acmicpc.net/problem/12919
출처:https://www.acmicpc.net/problem/20055
출처:https://www.acmicpc.net/problem/20437
출처:https://www.acmicpc.net/problem/16234
출처:https://www.acmicpc.net/problem/2493
출처:https://www.acmicpc.net/problem/14719
출처:https://www.acmicpc.net/problem/5972
출처:https://www.acmicpc.net/problem/2467
출처:https://www.acmicpc.net/problem/2138
출처:https://www.acmicpc.net/problem/7682
출처:https://www.acmicpc.net/problem/2668
출처:https://www.acmicpc.net/problem/1863
출처:https://www.acmicpc.net/problem/22251
출처:https://www.acmicpc.net/problem/7490
출처:https://www.acmicpc.net/problem/4485
출처:https://www.acmicpc.net/problem/1253
출처:https://www.acmicpc.net/problem/1806
출처:https://www.acmicpc.net/problem/1987
출처:https://www.acmicpc.net/problem/2110
출처:https://www.acmicpc.net/problem/4179
출처:https://www.acmicpc.net/problem/9935
출처:https://www.acmicpc.net/problem/13144
출처:https://www.acmicpc.net/problem/1976
출처:https://www.acmicpc.net/problem/1027
출처:https://www.acmicpc.net/problem/2179
출처:https://www.acmicpc.net/problem/2631
출처:https://www.acmicpc.net/problem/1238업로드중..
출처:https://www.acmicpc.net/problem/
출처:https://www.acmicpc.net/problem/2206
출처:https://www.acmicpc.net/problem/22866
출처:https://www.acmicpc.net/problem/24337
출처:https://www.acmicpc.net/problem/1943
출처:https://www.acmicpc.net/problem/9527
출처:https://www.acmicpc.net/problem/3687
출처:https://www.acmicpc.net/problem/2169
출처:https://www.acmicpc.net/problem/1202
출처:https://www.acmicpc.net/problem/24042
출처:https://www.acmicpc.net/problem/22954업로드중..
출처:https://www.acmicpc.net/problem/20188
출처:https://www.acmicpc.net/problem/12865
출처:https://www.acmicpc.net/problem/1655
출처:https://www.acmicpc.net/problem/3197
출처:https://www.acmicpc.net/problem/11401
펜윅 트리(Fenwick Tree), 혹은 바이너리 인덱스 트리(Binary Indexed Tree, BIT)는 구간 합 쿼리와 요소 업데이트를 효율적으로 수행할 수 있는 자료구조입니다. 이 자료구조는 주로 배열과 관련된 문제에서 많이 사용되며, 시간 복잡도가 O(lo
출처:https://www.acmicpc.net/problem/10830
출처:https://www.acmicpc.net/problem/2933
출처:https://www.acmicpc.net/problem/2749
출처:https://www.acmicpc.net/problem/9376
출처:https://www.acmicpc.net/problem/6549
출처:https://www.acmicpc.net/problem/6087
출처:https://www.acmicpc.net/problem/11066
출처:https://www.acmicpc.net/problem/11049
출처:https://www.acmicpc.net/problem/4991
출처:https://www.acmicpc.net/problem/7579
출처:https://www.acmicpc.net/problem/10942
출처:https://www.acmicpc.net/problem/1039
출처:https://www.acmicpc.net/problem/9370업로드중..
출처:https://www.acmicpc.net/problem/1981
출처:https://www.acmicpc.net/problem/11657
출처:https://www.acmicpc.net/problem/2931
출처:https://www.acmicpc.net/problem/11404
출처:https://www.acmicpc.net/problem/10217
출처:https://www.acmicpc.net/problem/2151
출처:https://www.acmicpc.net/problem/16954
출처:https://www.acmicpc.net/problem/1956
출처:https://www.acmicpc.net/problem/16946
출처:https://www.acmicpc.net/problem/2098
출처:https://www.acmicpc.net/problem/2186
출처:https://www.acmicpc.net/problem/1086
출처:https://www.acmicpc.net/problem/17404
출처:https://www.acmicpc.net/problem/3108
출처:https://www.acmicpc.net/problem/12886
출처:https://www.acmicpc.net/problem/2482
출처:https://www.acmicpc.net/problem/14002업로드중..
출처:https://www.acmicpc.net/problem/5213
출처:https://www.acmicpc.net/problem/14003
출처:https://www.acmicpc.net/problem/9252
출처:https://www.acmicpc.net/problem/9177
출처:https://www.acmicpc.net/problem/1019
출처:https://www.acmicpc.net/problem/13913
출처:https://www.acmicpc.net/problem/11779
출처:https://www.acmicpc.net/problem/5022
출처:https://www.acmicpc.net/problem/1167
Knuth's Optimization은 다이나믹 프로그래밍(DP) 문제를 해결하는 데 사용되는 기법으로, 일반적으로 DP의 시간 복잡도를 줄이는 데 도움을 줍니다. 이 기법은 DP 테이블에서의 최적 부분 구조를 활용하여 특정 조건을 만족하는 경우 탐색 공간을 줄여줍니
출처:https://www.acmicpc.net/problem/2263
출처:https://www.acmicpc.net/problem/11812
출처:https://www.acmicpc.net/problem/11438
출처:https://www.acmicpc.net/problem/1717
출처:https://www.acmicpc.net/problem/1637
출처:https://www.acmicpc.net/problem/4195
출처:https://www.acmicpc.net/problem/10775
출처:https://www.acmicpc.net/problem/1197
출처:https://www.acmicpc.net/problem/4386
출처:https://www.acmicpc.net/problem/10282
출처:https://www.acmicpc.net/problem/1774
출처:https://www.acmicpc.net/problem/2887
출처:https://www.acmicpc.net/problem/15681
출처:https://www.acmicpc.net/problem/16933
출처:https://www.acmicpc.net/problem/2213
출처:https://www.acmicpc.net/problem/2533
출처:https://www.acmicpc.net/problem/1949
출처:https://www.acmicpc.net/problem/11758
출처:https://www.acmicpc.net/problem/2166
출처:https://www.acmicpc.net/problem/12781
출처:https://www.acmicpc.net/problem/17386
출처:https://www.acmicpc.net/problem/17387
출처:https://www.acmicpc.net/problem/2162
출처:https://www.acmicpc.net/problem/1786
출처:https://www.acmicpc.net/problem/1701
출처:https://www.acmicpc.net/problem/4354
출처:https://www.acmicpc.net/problem/10266
출처:https://www.acmicpc.net/problem/14725
출처:https://www.acmicpc.net/problem/3665
출처:https://www.acmicpc.net/problem/1005
출처:https://www.acmicpc.net/problem/1766
출처:https://www.acmicpc.net/problem/14442
출처:https://www.acmicpc.net/problem/13344
출처:https://www.acmicpc.net/problem/3584
출처:https://www.acmicpc.net/problem/17435
출처:https://www.acmicpc.net/problem/13511
출처:https://www.acmicpc.net/problem/2150
출처:https://www.acmicpc.net/problem/4196
출처:https://www.acmicpc.net/problem/3977
출처:https://www.acmicpc.net/problem/4013
출처:https://www.acmicpc.net/problem/11280
출처:https://www.acmicpc.net/problem/11281
출처:https://www.acmicpc.net/problem/11505
출처:https://www.acmicpc.net/problem/11658
출처:https://www.acmicpc.net/problem/1708
출처:https://www.acmicpc.net/problem/9240
출처:https://www.acmicpc.net/problem/7420
출처:https://www.acmicpc.net/problem/1867
출처:https://www.acmicpc.net/problem/11375
출처:https://www.acmicpc.net/problem/11376
출처:https://www.acmicpc.net/problem/17412
출처:https://www.acmicpc.net/problem/11378
출처:https://www.acmicpc.net/problem/2316
출처:https://www.acmicpc.net/problem/15591
출처:https://www.acmicpc.net/problem/10021
출처:https://www.acmicpc.net/problem/17780
출처:https://www.acmicpc.net/problem/18500
출처:https://www.acmicpc.net/problem/16639
출처:https://www.acmicpc.net/problem/1800
출처:https://www.acmicpc.net/problem/14466
출처:https://www.acmicpc.net/problem/5852
출처:https://www.acmicpc.net/problem/5827
출처:https://www.acmicpc.net/problem/17837
출처:https://www.acmicpc.net/problem/9874
출처:https://www.acmicpc.net/problem/5901