학습목표 자료구조 관점에서 배열을 이해하고 여러 방법으로 구현 가능선형 자료구조많은 수의 데이터를 다룰 때 사용하는 구조각 데이터를 인덱스와 1:1 대응하도록 구성데이터가 메모리 상에 연속적으로 저장됨인덱스를 이용하여 데이터에 빠르게 접근 가능데이터의 추가 / 삭제가
후입선출 (Last In First Out; LIFO) 자료구조: 마지막에 들어온 데이터가 먼저 나가는 구조후입 선출 구조기본적으로 데이터 추가, 꺼내기, 스택 공간 확인 동작으로 이루어짐데이터 추가 (Push): 스택의 가장 마지막 위치에 데이터 추가데이터 꺼내기 (
큐 (Queue)
데크 (Deque) 양쪽에서 삽입과 삭제가 모두 가능한 자료구조 Deque: Doubly-ended Queue Stack과 Queue를 합친 형태 데크 기본 구조 데크의 기본 구조는 양방향에서 삽입 삭제 가능한 구조 일부 기능을 제한하여 용도에 맞게 변형 가능
자료구조 (Data Structure) 자료를 효율적으로 관리하기 위한 구조 관리? ► 저장, 삭제, 탐색 등 목적에 맞게 사용한 좋은 자료 구조는 실행 시간 단축 또는 메모리 용량 절감 효과가 있음 알고리즘과 밀접한 관계 선형 자료 구조 앞 뒤로 배치되어 있
문자와 숫자, \_, $ 사용가능숫자로 시작 불가대문자와 소문자 구분공백 사용 X미리 예약된 이름 사용 X카멜 표기법 : 가장 앞의 문자는 소문자로, 나머지 단어의 첫 문자는 대문자로 표기ex) myName, iPhone파스칼 표기법: 각 문자의 첫 문자를 대문자로 표
문자와 숫자, \_, $ 사용가능숫자로 시작 불가대문자와 소문자 구분공백 사용 X미리 예약된 이름 사용 X카멜 표기법 : 가장 앞의 문자는 소문자로, 나머지 단어의 첫 문자는 대문자로 표기ex) myName, iPhone파스칼 표기법: 각 문자의 첫 문자를 대문자로 표
단항 연산자: 항이 1개 ex) num++이항 연산자: 항이 2개 ex) 1+1삼항 연산자: 항이 3개 ex) (3>1)?1:0대입 연산자: '=', 우측의 데이터를 좌측의 변수에 대입부호 연산자: +, - (부호를 나타내는 연산자)산술 연산자: +, -,
조건에 따라 무엇을 실행할지 판단하는 분기 구조입력 값에 따라 어떤 case를 실행할지 판단하는 분기 구조
주어진 횟수만큼 반복하여 실행하는 구조for ( 초기치; 조건문; 증가치; ) { 반복하여 실행할 내용;}조건문이 만족하는 동안 반복하여 실행하는 구조while과 do-while 구조가 있음while (조건문) { 반복하여 실행할 내용;}조건문 부터 비교하고, 실행do
int\[] myArray1 = {1,2,3,4,5};char\[] myArray2 = {'a', 'b', 'c', 'd', 'e'};int myArray3 = {{1,2,3}, {4,5,6}};int\[] myArray4 = {{{1,2}, {3,4}}, {{5,6}
객체(사물, 실체)를 정의하는 설계도붕어빵 틀, 레시피 ..실체클래스와 객체의 관계클래스로부터 객체를 선언 (인스턴스 화)어떤 객체는 어떤 클래스의 인스턴스public class 클래스명 {// 객체변수// 메소드 ( 리턴타입 메소드명 (파라미터) {} )// + 접근
기존 클래스에 기능 추가 및 재정의하여 새로운 클래스를 정의부모 클래스 : 상속 대상이 되는 기존 클래스 = 상위 클래스, 기초 클래스자식 클래스 : 기존 클래스를 상속하는 클래스 = 하위 클래스, 파생 클래스부모 클래스의 필드와 메소드가 상속됨 (생성자, 초기화 블록
자식 클래스에서 반드시 오버라이딩 해야하는 메소드선언만 하고 구현 내용 없음abstract void print();하나 이상의 추상 메소드를 포함하는 클래스반드시 구현해야 하는 부분에 대해 명시적으로 표현추상 클래스 자체는 객체 생성 불가abstract class 클래
다중 상속처럼 사용할 수 있는 기능추상 메소드와 상수만으로 이루어짐접근제어자 interface 인터페이스이름 {public static final 타입 상수이름 = 값;public abstract 반환타입 메소드이름(매개변수);...}class 클래스이름 impleme
클래스 in 클래스 (클래스 안에 선언한 클래스)class Outer {...class Inner {...}}내부 클래스에서 외부 클래스 멤버에 접근가능외부에서는 내부 클래스에 접근 불가인스턴트 클래스 (instance class) : 바깥 클래스를 만들어야 사용할 수
콘솔 입력 입출력 방식 중 콘솔 입력 방법 > System.in.read() InputStreamReader reader = ... BufferedReader br = .. Scanner ... // 제일 많이 사용! 콘솔 출력 입출력 방식 중 콘솔 출력 방법 >
한 객체가 여러 가지 타입을 가질 수 있는 것부모클래스 타입의 참조 변수로 자식클래스 인스턴스 참조class Person {}class Student extends Person {} // 자식 클래스Person p1 = new Student(); // 자식 클래스에 객
정상적이지 않은 Case0으로 나누기배열의 인덱스 초과없는 파일 열기...정상적이지 않은 Case에 대한 적절한 처리 방법예외 발생 여부와 관계없이 항상 실행되는 부분throw: 예외를 발생 시킴throws: 예외를 전가 시킴
여러 데이터를 편리하게 관리할 수 있게 만들어 놓은 것: 자료 구조 및 알고리즘을 구조화List 인터페이스, Set 인터페이스, Map 인터페이스순서가 있는 데이터의 집합데이터 중복 허용대표 구현 클래스: ArrayList, LinkedList, Vector순서가 없는
메소드 대신 하나의 식으로 표현하는 것익명 함수 (Anonymous function)🔼 일반적인 메소드 형태🔼 람다 표현식일반적으로 코드가 간결해짐코드 가독성이 높아짐생산성이 높아짐재사용이 불가능 (익명)디버깅 어려움재귀함수로는 맞지 않음
스트림 (Stream) 배열, 컬렉션 등의 데이터를 하나씩 참조하여 처리 가능한 기능 for문의 사용을 줄여 코드를 간결하게 함 스트림은 크게 3가지로 구성 -- Stream 생성 -- 중개 연산 -- 최종 연산 스트림 생성 배열 스트림 컬렉션 스트
Practice 1-1문제 설명입력된 정수 자료형의 숫자를 거꾸로 변환하는 프로그램을 작성하세요.예를들어 12345가 입력되면 54321로 변환하여 출력하면 된다.100의 경우 001이 되는데 이 경우 1만 출력하도록 한다.입출력 예시Practice 2-2문제 설명아스
집합 (Set) 특정 조건에 맞는 원소들의 모임 집합 표현 방법 원소나열법 A = {1, 2, 3, 4, 5}, B = {2, 4, 6, 8, 10} 조건제시법 A = {A | A는 정수, 1<=A<=5} 벤 다이어그램 교집합 두 집합이 공통으로 포
어떤 사건에서 일어날 수 있는 경우의 가짓수예시 1) 동전을 던지는 사건: 경우의 수 2예시 2) 주사위를 던지는 사건: 경우의 수 6사건 A가 일어날 경우의 수 : n(A)사건A 또는 사건B가 일어날 경우의 수사건A와 사건B가 동시에 일어날 경우의 수
Practice 2-1문제 설명로마 숫자 표기를 정수형으로 변환하는 프로그램을 작성하세요.로마 숫자 표기법은 I, V, X, L, C, D, M 으로 이루어져있다.로마 숫자 표기 방식큰 기호에서 작은 기호 방향으로 작성 (XI, VI, II, ...)다음의 경우 작은
Practice 3-1문제 설명정수형 오름차순 데이터가 nums 라는 배열에 주어졌다.현재 배열 내에는 중복된 데이터들이 들어있을 수 있는데 해당 중복들을 제거하는 프로그램을 작성하세요.이 때, 추가 배열을 사용하지 않고 중복 데이터들을 제거해야 하며nums 배열 하나
순열 (Permutation) 순서를 정해서 나열 서로 다른 n개 중에 r개를 선택하는 경우의 수 (순서 O, 중복 X) 예시) 5명을 3줄로 세우는 방법 예시) 서로 다른 4명 중 반장, 부반장을 뽑는 방법 중복 순열 서로 다른 n개 중에 r개를 선택하
조합 (Combination) 서로 다른 n개 중에서 r개를 선택하는 경우의 수 (순서 X, 중복 X) 예시 ) 서로 다른 4명 중 주번 2명 뽑는 방법 중복 조합 서로 다른 n개 중에서 r개를 선택하는 경우의 수 (순서 X, 중복 O) 예시) 후보 2명
어떤 수열의 일반항을 그 이전의 항들을 이용하여 정의한 식예시) 피보나치 수열1 + 1 = 21 + 2 = 32 + 3 = 5...어떤 함수가 자신을 다시 호출하여 작업을 수행하는 방식종료 조건 반드시 있어야 한다!
같은 수를 두번 곱합거듭 제곱: 같은 수를 거듭하여 곱합a를 제곱하여 b가 될 때 a를 b의 제곱근이라고 함a가 b가 되기 위해 제곱해야 하는 수
복잡도 (Complexity) 알고리즘 성능을 나타내는 척도 시간 복잡도 (Time Complexity) 알고리즘의 필요 연산 횟수 공간 복잡도 (Space Complexity) 알고리즘의 필요 메모리 시간 복잡도와 공간 복잡도는 Trade-off 관계 시간
데이터를 링크로 연결해서 관리하는 구조자료의 순서는 정해져 있지만, 메모리상 연속상이 보장되지는 않음데이터 공간을 미리 할당할 필요 없음즉, 리스트의 길이가 가변적이라 데이터 추가/삭제 용이연결 구조를 위한 별도 데이터 공간 필요연결 정보를 찾는 시간이 필요 (접근 속
키(Key), 값(Value)을 대응시켜 저장하는 데이터 구조키를 통해 해당 데이터에 빠르게 접근 가능해싱키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정키: 해시 테이블 접근을 위한 입력 값해시 함수: 키를 해시 값으로 매핑하는 연산해시 값: 해시 테
노드와 링크로 구성된 자료구조 (그래프의 일종, Cycle 없음)계층적 구조를 나타낼 때 사용폴더 구조 (디렉토리, 서브 디렉토리)조직도, 가계도, ...노드(Node): 트리 구조의 자료 값을 담고 있는 단위엣지(Edge): 노드 간의 연결선(=link, branch
올바른 값을 도출은 했지만, 정해진 시간 내에 동작을 하지 않아 실제 코딩 테스트에서 fail이 나는 경우가 있다. 우리는 이러한 문제를 해결 하기 위해 시간 복잡도, 공간 복잡도 등을 고려하여 알고리즘을 설계해 조금 더 효율적으로 코딩을 할 수 있다.어떤 문제를 해결