오블완 21

객체지향 프로그래밍 1

객체지향언어의 특징1. 코드의 재사용성이 높다.상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 그대로 사용할 수 있어 재사용성 높음 Ex) 부모 클래스를 상속받아 자식 클래스를 생성하면, 추가적인 코드 없이 부모 클래스 기능 사용 가능 2. 코드의 관리가 용이하다.코드의 구조를 클래스와 객체 단위로 나누어 관리하기 때문에 유지보수가 쉬움 Ex) 부모 클래스의 메서드를 수정하면, 해당 메서드를 상속받은 모든 자식 클래스에서 수정된 메서드를 자동으로 사용 3. 신뢰성 높은 프로그래밍을 가능하게 한다. 접근 제어자를 사용하여 클래스 외부에서 필드와 메서드에 대한 접근을 제한 Ex) Getter, Setter를 통해 데이터 접근 시 조건 검사를 수행 할 수 있다.클래스와 객체클래스객체를 정의해 놓은 ..

JAVA 2024.11.27

JAVA Collection Framework 3

Mapkey와 value로 구성된 Entry 객체 저장 HashMap, TreeMap, LinkedHashMap 등 다양한 Map 구현체가 내부적으로 Entry 객체를 사용하여 키-값 쌍을 관리Key 중복 불가능, Value 중복 가능 순서 없음 검색에 매우 효율적 Key, Value, Entry 모두 객체 **** Map 인터페이스는 Iterable 인터페이스, Collection 인터페이스를 상속받지 않는다.즉, Iterable, Collection 인터페이스가 제공하는 메서드를 사용할 수 없다.HashMap사용자 정의 클래스 객체를 사용할 때 hashCode(), equals() 함수를 반드시 오버라이딩해줘야 한다.-> 기준 설정 TreeMap사용자 정의 클래스 객체를 사용할 때, Comparabl..

JAVA 2024.11.26

JAVA Collection Framework 2

Collection 인터페이스 메서드 11가지List와 Set 구현체에서 사용할 수 있는 부모 클래스의 메서드add(E e) : booleanCollection에 객체 추가Collection이 변경되면 true 반환 SET 사용시객체가 Set에 존재하면 true 반환, 존재하면 false 반환 addAll(Collection c) : booleanCollection에 매개변수 Collection 요소들을 추가Collection이 변경되면 true 반환 contains(Object o) : booleanCollection에 매개변수 객체가 존재하면 true존재하지 않으면 false 반환 containsAll(Collection c) : booleanCollection에 매개변수 Collection c 원소..

JAVA 2024.11.25

JAVA Collection Framework 1

Collection동일 타입의 원소들을 묶어 동적으로 관리하는 자료구조 컬렉션에서 원소는 객체만 저장 가능 ** java.util 패키지에 Collection 존재 List순서 유지 (연속적/순차적 저장)중복 저장 가능 list(파이썬)[List 구현체]ArrayList, Vector, LinkedListArrayList배열을 이용하여 List의 특징을 구현한 자료구조 배열과 같이 인덱스로 원소 관리사용자 정의 객체에 대한 contains(), remove()를 위해 equals() 재정의 필요 비동기화 메서드로 구성, 싱글 쓰레드 환경에 효율적 -> 여러 쓰레드가 ArrayList에 동시에 요소를 추가하거나 삭제하면 데이터 불일치 문제 발생 VectorArrayList와 유사 ( Vector 구버전 )..

JAVA 2024.11.24

백준 11729 [python]

문제세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다.한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다.아래 그림은 원판이 5개인 경우의 예시이다.입력첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다.출력첫째 줄에 옮긴 횟수 K를 출력한다.두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수 A B를 빈칸을 사이에..

알고리즘 2024.11.23

백준 2447 [python]

문제재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다.크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다.**** ****N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.입력첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k 출력첫째 줄부터 N번째 줄까지 별을 출력한다.내 풀이1. 반복문을 사용하여 각 행에 대하여 함수를 실행시킨다. 2. 각 행을 idx로 가정하고 인덱스가 특정..

알고리즘 2024.11.22

REST API [간단정리]

어떤 방식으로 요청하고, 어떤 방식으로 응답할지를 지정해 놓은 다양한 형식들 중 하나 요청의 메서드와 URI 자체가 목적을 명확히 나타나도록 작성해야 함 -> URI만 보고도 어떤 기능을 할지 추측하도록 작성해야 함 REST API 특징1. 리소스 기반 구조 모든 것을 리소스로 표현, 각 리소스는 고유한 URI를 가진다. URI에 어떤 자원에 관한 것인지 표현해야함 // 가능한 해당 자원에 대해서만 표현해야함 유저에 관한 URI GET /Users/{id} // id 값으로 유저 정보 조회 DELETE /Users/{id} // id 값을 갖는 유저 정보 제거 리소스 예시 Users, members, ..

백준 24511 [python]

1차 시도 - 실패from collections import dequeimport sysN = int(sys.stdin.readline().rstrip())# 스택 혹은 큐이므로 dequeue를 사용한다. dequeue = deque([deque() for i in range(N)])# 스택인지 큐인지 typeList = list(map(int, sys.stdin.readline().split()))# 각 자료구조에 어떤 원소가 들어있는지 dataList = list(map(int, sys.stdin.readline().split()))# 넣을 때는 큐나 스택이나 뒤로 들어가기 때문에 조건 검사 필요 없음 for i in range(N) : dequeue[i].append(dataList[i])# ..

알고리즘 2024.11.20

트리, 이진트리, BST, B Tree, RB Tree

트리계층적인 구조를 나타내는 자료 구조 (비선형 구조)부모 자식 관계의 노드들로 이루어진다.[응용 분야]1. 계층적인 조직 표현2. 컴퓨터 디스크의 디렉토리 구조 트리 용어노드 - 트리의 구성요소 간선 - 노드와 노드를 연결하는 선루트 - 최상위 노드서브 트리 - 하나의 노드와 그 노드들의 자손들로 이루어진 트리단말 노드 - 자식이 없는 노드레벨 - 트리의 각층 번호높이 - 트리의 최대 레벨차수 - 노드가 가지고 있는 자식 노드의 수 이진트리모든 노드는 최대 2개의 서브 트리를 가질 수 있다.서브트리는 공집합일 수 있음**** 이진트리에는 서브 트리 간의 순서가 존재왼쪽 서브트리, 오른쪽 서브트리 이진트리 성질1. 노드의 개수가 n개이면 간선의 개수는 n-1개이다.2. 높이가 h인 이진트리의 경우 최소 ..

자료구조 2024.11.19

퀵정렬, 병합정렬, 힙정렬

정렬[안정적인 정렬 알고리즘] 중복된 값을 입력 순서와 동일하게 정렬[안정적이지 않은 알고리즘] 중복된 값을 입력 순서와 상관없이 무작위로 정렬[제자리 정렬] 원본 배열 외에 추가적인 큰 메모리 공간을 사용하지 않는 정렬 알고리즘- 버블정렬, 선택정렬, 삽입정렬, 퀵정렬퀵정렬가장 빠른 정렬 알고리즘퀵정렬은 불안정 정렬 알고리즘 [장점]빠르게 정렬 가능 O(NlgN)제자리 정렬로 추가 메모리 사용이 적음 [단점]불안정 정렬이므로 동일한 값에 대하여 순서 보장 못함 최악의 경우 O(N^2) 소요 // 정렬된 배열이거나, 거의 정렬된 경우 최악의 경우 발생피벗 선택 방법에 따라 성능 차이가 발생할 수 있다.재귀호출로 인한 오버헤드가 발생한다. p (피벗, 중심축) - 그룹을 나누는 기준 pl - 왼쪽 커서 p..

자료구조 2024.11.18