누적합(Prefix Sum)
·
코딩테스트/백준
배열에서 연속된 구간의 합을 빠르게 구하기 위한 알고리즘 기법보통 반복문으로 매번 구간의 합을 직접 계산하면 O(N)이 걸리지만 누적합 배열을 미리 만들어두면 O(1)에 구간합을 구할 수 있어 시간을 획기적으로 줄일 수 있습니다.예시 문제1)https://www.acmicpc.net/problem/11659문제수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.시간복잡도를 생각하지 않고 문제를 단순히 봤을 때 반복문을 사용해서 구현할 수 있음n, m = map(int, input().split())data = list(map(int, input().split()))ran = []for _ in range(m): s, e = map(int, input().split..
[Java] 컬렉션 자료구조
·
프로그래밍 언어/Java
컬렉션 프레임워크자바는 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 java.util 패키지에 포함시켜 두었는데 이를 총칭해서 컬렉션 프레임워크라고 부름List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어 공통점이 있기 때문에 공통된 메소드만 따로 모아 Collection 인터페이스로 정의해 두고 이것을 상속하고 있음 List 컬렉션객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스가 부여도고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공ArrayList, Vector, LinkedList등이 있음객체 추가boolean add(E e) //주어진 객체를 맨 끝에 추가void add(int index, E ele..
[Java] 멀티 스레드
·
프로그래밍 언어/Java
멀티 스레드란?운영체제는 실행 중인 프로그램을 프로세스로 관리함이때 운영체제는 멀티 프로세스를 생성해서 처리함하나의 프로세스 내에서 멀티 태스킹 할 수 있도록 만들어진 프로그램 -> 멀티 스레드가 있기 때문운영체제는 실행 중인 프로그램을 프로세스로 관리함이때 운영체제는 멀티 프로세스를 생성해서 처리함멀티 스레드는 프로세스 내부에서 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스가 종료되므로 다른 스레드에 영향을 미침따라서 예외 처리를 잘 해야함 메인 스레드자바의 모든 프로그램은 메인 스레드가 main() 메소드를 실행하면서 시작됨public static void main(String[] args){ String data = null; if{ } while(){ }}메인 스..
[Java] 제네릭(Generic)
·
프로그래밍 언어/Java
제네릭(Generic)이란?"결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능public class Box { pulic T content;}Box클래스에서 결정되지 않은 content의 타입을 T라는 타입 파라미터로 정의한 것.는 T가 타입 파라미터임을 뜻하는 기호로, 타입이 필요한 자리에 T를 사용할 수 있음을 알려주는 역할Box box = new Box();box.content = "문자열예시";Box box = new Box(); //생성자 호출시 생성자 타입 생략 가능이때 기본 타입은 타입 파라미터의 대체 타입이 될 수 없음 -> int, double, char와 같은 기본형 타입 사용 불가능반드시 Wrapper 클래스(Integer, Dou..
4.1~4.3 복잡도, 선형 자료구조, 비선형 자료구조
·
CS공부/자료구조
4.1.1 복잡도와 빅오 표기법알고리즘을 수행하면 시간과 메모리 공간 등의 자원이 사용됨 -> 자원을 낭비하지 않으려면 효율적인 알고리즘 필요효율적인 알고리즘을 정량화 하기 위한 개념 -> 시간 복잡도/공간 복잡도시간 복잡도 - 알고리즘의 실행 시간을 정량화하는 것공간 복잡도 - 실행하는 데 필요한 메모리 사용량을 정량화하는 것알고리즘의 복잡도는 주로 빅오 표기법(big-O notation)으로 나타냄빅오 표기법 - 입력 값(n)에 대한 수식에서 최고차항을 기준으로 알고리즘이 수행되는 최악의 시간 복잡도 더보기점근적 표기법 - 알고리즘의 복잡도를 나타낼 때 계수, 상수항 등 중요하지 않은 항목을 무시하고 표현하는 것최악의 경우: 빅오 표기법평균의 경우: 빅세타 표기법최선의 경우: 빅오메가 표기법 4.2...
3.3-3.4 트랜잭션, 조인
·
CS공부/데이터베이스
3.3.1 트랜잭션데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위 또는 일련의 연산특징-ACID원자성(Atomicity): 트랜잭션이 데이터베이스에 완전히 반영되거나 아예 실행되지 않아야함일관성(Consistency): 트랜잭션 수행이 완료된 데이터베이스는 일관성이 있음독립성(Isonlation): 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음영속성(Durability): 완료한 트랜잭션의 결과가 데이터베이스에 영구적으로 반영됨명령어COMMIT: 트랜잭션이 정상적으로 종료되어 데이터베이스에 변경사항을 반영하는 명령어ROLLBACK: 트랜잭션이 비정상적으로 종료되어 트랜잭션이 수행한 변경 사항을 취소하고 데이터베이스를 이전 상태로 돌리는 명령어SAVEPOINT: 트랜잭션에서 특정지점을 지정하..
3.1-3.2 데이터베이스의 종류, 관계형 데이터베이스
·
CS공부/데이터베이스
3.1.1 데이터베이스란사용자나 프로그램에서 사용하기 위해 저장 및 관리하는 데이터 집합특징실시간 접근: 데이터베이스에 언제든지 접근해 필요한 처리를 할 수 있음동시 공유: 여러 사용자가 데이터베이스에 접근할 수 있음지속적 변화: 데이터의 갱신, 삽입, 삭제 등을 통해 계속해서 변화내용 기반 참조: 데이터의 값을 이용해 데이터에 접근할 수 있음구성개체(entity): 데이터로 표현하려는 대상을 의미, 하나 이상의 속성으로 구성속성(attribute): 개체의 특성과 상태를 나타내며 데이터베이스를 구성하는 가장 작은 논리적 단위관계(relationship): 개체 간에 어떤 관련이 있는지를 나타내며 주로 동사로 표현스키마(schema)데이터베이스의 전체적인 구조와 제약 조건을 명시하기 위해 사용내부 스키마..
2.3-2.4 HTTP, REST
·
CS공부/네트워크
2.3.1 HTTPHyperText Transfer Protocol인터넷 상에서 데이터를 전송하기 위한 프로토콜, TCP/IP 4계층에서 응용 계층에 속함비연결성 - 클라리언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊음불특정 다수를 대상으로 하는 서비스에 유리함서버에서 응답을 받고 나서도 연결을 유지하려면 자원을 사용해야함 -> HTTP는 연결 유지X서버가 클라이언트를 기억할 수 없다는 단점이 있음이를 보완하기 위해 일정 시간 동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용마지막 응답 이후 일정 시간 동안 연결을 유지해 동일한 클라이언트로부터 요청이 오면 연결 과정을 생략할 수 있음무상태 - 서버에서 클라이언트의 상태를 저장하지 않는 것클라이언트가 이전에 요청한 사항을 서..
2.1-2.2 네트워크 계층, TCP와 UDP
·
CS공부/네트워크
2.1.1 OSI 7계층네트워크 통신이 이뤄지는 과정을 7단계로 나눈 네트워크 표준 모델각 계층은 독립적이며 데이터를 송신할 때 각 계층에서 필요한 정보를 추가해 데이터를 가공제어 정보를 담은 헤더(앞에)나 트레일러(뒤에)를 붙이는 과정이 있음 -> 데이터 캡슐화why? -> 수신부의 같은 계층에서 데이터 호환성을 높이고 오류의 영향을 최소화하기 위해프로토콜통신 규약데이터를 송수신하기 위해 정한 규칙2.1.2 TCP/IP 4계층인터넷에서 데이터를 주고받기 위한 네트워크 프로토콜Transmission Control Protocol/Internet ProtocolTCP/IP 기반 프로토콜의 대표적인 예시가 HTTPTCP/IP에 맞춰 네트워크 통신 표준인 OSI 7계층을 단순화한 것이 TCP/IP 4계층2.2..
[자료구조] - 자바 Collection
·
자료구조
컬렉션(Collection)데이터 집합, 그룹을 의미1. 컬렉션 인터페이스 (Collection Interface)Collection 인터페이스는 Java의 컬렉션 프레임워크의 루트 인터페이스로, 데이터를 그룹화하는 기본적인 기능들을 정의Collection 인터페이스는 여러 구체적인 인터페이스들로 확장되며, 각각의 특성과 목적에 따라 다양한 구현 클래스를 제공2. List 인터페이스 (Ordered Collection)List 인터페이스는 순서가 있는 컬렉션을 나타내며, 요소의 중복을 허용인덱스를 사용하여 요소에 접근할 수 있다.ArrayList: 동적 배열로 구현된 리스트. 빠른 임의 접근과 요소 추가/삭제가 가능하지만, 배열 크기 변경 시 성능 저하가 발생할 수 있다.List arrayList = n..