
빈 스코프 스프링 빈은 기본적으로 시글톤 스코프로 생성된다. 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료 까지 유지되는 가장 넓은 범위의 스코프 프로토 타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 프로토타입 스코프 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반..

JAVA 자바 백준 12891번 문제 문제 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다. 하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어 질 수 있기 때문이다. 그래서 민호는 부분문자열에서 등장하는 문자의 개수가 특정 개수 이상이..
문제 주몽은 철기군을 양성하기 위한 프로젝트에 나섰다. 그래서 야철대장을 통해 철기군이 입을 갑옷을 만들게 하였다. 야철대장은 주몽의 명에 따르기 위하여 연구에 착수하던 중 아래와 같은 사실을 발견하게 되었다. 갑옷을 만드는 재료들은 각각 고유한 번호를 가지고 있다. 갑옷은 두 개의 재료로 만드는데 두 재료의 고유한 번호를 합쳐서 M(1 ≤ M ≤ 10,000,000)이 되면 갑옷이 만들어 지게 된다. 야철대장은 자신이 만들고 있는 재료를 가지고 갑옷을 몇 개나 만들 수 있는지 궁금해졌다. 이러한 궁금증을 풀어 주기 위하여 N(1 ≤ N ≤ 15,000) 개의 재료와 M이 주어졌을 때 몇 개의 갑옷을 만들 수 있는지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,0..

List 란?? 특징 순서와 중복이 허용되는 자료구조 인덱스로 원소에 접근이 가능합니다 크기가 가변적입니다. 종류 LinkedList 양방향 포인터 구조로 데이터 삽입, 삭제가 빠릅니다. ArrayList보다 검색이 느립ㄴ디ㅏ. ArrayList 단방향 포인터 구조로 데이터 순차적 접근에 강점을 가집니다. 배열을 기반으로 데이터를 저장합니다. 데이터 삽입, 삭제가 느립니다. 데이터 검색이 빠릅니다. Map 이란?? 특징 Key와 Value의 한쌍으로 이루어지는 데이터의 집합입니다. Key에 대한 중복이 없으며 순서를 보장하지 않습니다. 검색 속도가 빠릅니다. 인덱스가 따로 존재하지 않기 때문에 iterator를 사용합니다. 종류 HashMap Key에 대한 중복이 없으며 순서를 보장하지 않는다. Key와..

투 포인터 문제 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. 입력 첫 줄에 정수 N이 주어진다. 출력 입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 출력하시오 문제 분석 문제에 주어진 시간 제한은 2초입니다 그런데 N의 최댓값은 10,000,000으..

인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 TCP/IP 패킷 정보 TCP 특징 (전송제어 프로토콜, Transmission Control Protocol) 연결지향 - TCP 3 way handshake (가상연결) 데이터 전달 보증 순서 보장 신뢰할 수 있는 프로토콜 현재는 대부분 TCP 사용 TCP 3 way handshake UDP 특징 (사용자 데이터그램 프로토콜 (User Datagram Protocol) 하얀 도화지에 비유(기능이 거의 없음) 연결지향 - TCP 3 way handshake X 데이터 전달 보증 X 순서 보장 X 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름 정리 I..

구간합 구하기 4 문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N N과 M의 최대 숫자는 100,000이다. 구간 합을 매번 계산한다면 최악의 경우 1억회 이상의 연산을 수행하게 되어 1초 이상의 수행 시간이 필요합니다. 많은 수의 값을 받는 경우 Scanner 보다 속도..

문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. - 두번째로 입력받는 숫자의 길이가 최대 100이기 때문에 int나long으로는 받을 수 없다. 그러므로 String을 사용해서 받아야한다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); String snum = sc.next(); c..
일반클래스 클래스 앞에 abstract 명령어가 붙지 않는다 일반클래스 내에서 메서드에 abstract 명령어를 붙일 수 없다. 객체 생성이 가능하다 class normalClass { abstract public void function_A() {} // 에러!!! 일반 클래스에서는 추상메서드 사용 불가 public void function_B() { System.out.println("normalClass"); } } 추상 클래스 추상클래스는 클래스 앞에 abstract 명령어가 붙는 클래스를 의미한다 추상클래스 내에서는 메서드에 abstract를 붙일 수도 붙이지 않을 수도 있다. 객체 생성이 불가능하다 추상클래스가 추상클래스를 상속 받을 수도 있다 abstract class B_class { ab..

시간 복잡도 시간 복잡도의 유형 빅-오메가( Ω(n) ) : 최선일 때의 연산 횟수를 나타낸 표기법 빅-세타( Θ(n) ) : 보통일 때의 연산 횟수를 나타낸 표기법 빅-오( O(n) ) : 최악일 때의 연산 횟수를 나타낸 표기법 연산 횟수 계산 방법 연산 횟수 = 알고리즘 시간 복잡도 X 데이터의 크기 알고리즘 적합성 평가 ex) 데이터의 최대 크기(n)가 1,000,000 이고 시간이 2초(2억 2,000,000,000) 일때 버블 정렬(n2 ,n제곱) = (1,000,000)2 = 1,000,000,000,000 > 200,000,000 ==> 부적합 알고리즘 병합 정렬(nlogn) = 1,000,000log(1,000,000) = 약 2,000,000 적합 알고르짐..