분류 전체보기(324)
-
[명품 Java] 6장 연습문제 (모듈과 패키지 개념, 자바 기본 패키지)
[6장 1번] import에 대한 다음 질문에 답하라. (1) import 문은 언제 사용하며, import 문이 의미하는 바는 무엇인가? - 다른 패키지의 클래스를 사용할 때, 컴파일러에게 그 클래스의 경로명을 알려줄 때 사용한다 (2) import java.util.Random;과 import java.util.*;의 의미는 각각 무엇인가? - import java.util.Random; : util패키지의 Random클래스를 사용 - import java.util.*; : util패키지의 모든 클래스를 사용 (3) import 문을 사용하지 않고도 자바 프로그램을 작성할 수 있는가? - java.util.Scanner sc = new java.util.Scanner(System.in)과 같이 완전 ..
2021.12.08 -
[Data Structure] 배열 리스트 (ArrayList)
리스트 - 순서를 가진 데이터들의 모임 - ex) 오늘 해야 할 일 : (청소, 쇼핑, 영화 관람), 요일들 : (일, 월, 화,... 토) 리스트 ADT - n개의 element형으로 구성된 순서가 있는 모임 void init_list(ArrayList *L) 리스트 초기화 int is_empty(ArrayList *L) 공백 상태 검출 함수 int is_full(ArrayList *L) 포화 상태 검출 함수 void insert(ArrayList *L, int pos, element item) 리스트의 pos위치에 item 삽입 void insert_last(ArrayList *L, element item) 리스트의 last에 item 삽입 void insert_first(ArrayList *L, e..
2021.12.08 -
[Data Structure] 덱 (Deque)
덱 (Deque - Double Ended Queue) - 큐(Queue) : 전단(front)에서 삭제, 후단(rear)에서 삽입 - 덱(Deque) : 큐의 전단(front), 후단(rear)에서 모두 삽입/삭제 가능 ※ Example - delete_rear / add_front - MAX_DEQUE_SIZE = 5 front rear 과정 0 0 Deque 초기화 0 1 add_rear 0 2 add_rear (1) 4 2 add_front (2) 3 2 add_front → 포화 4 2 delete_front 0 2 delete_front (3) 0 1 delete_rear (4) 0 0 delete_rear → 공백 (1) → (2) front에서 add를 하려면 원래 front 인덱스에 it..
2021.12.07 -
[Data Structure] 원형큐 (Circular Queue)
선형큐 문제점 가득 차지 않았지만, rear가 마지막 인덱스를 가리키고 있을 경우 -> euqueue하기 위한 공간을 마련해야 하기 때문에 전체 데이터를 이동 -> 비효율적인 작업 발생 -> 해결 : 원형큐 원형큐 (Circular Queue) - 배열의 끝 (MAX_QUEUE_SIZE -1)에 도달하면 다음 증가되는 값 = 0 - 초기화 상태 : front = rear = 0 - front : 항상 큐의 첫 번째 요소에서 하나 전 - rear : 마지막 item의 인덱스 공백 상태/포화 상태를 구분하기 위해 항상 1칸은 비워둔다 공백 상태 : front == rear 포화 상태 : front가 rear보다 하나 다음 ※ Example (enqueue / dequeue 반복을 통한 인덱스 변화) - MA..
2021.12.06 -
[Data Structure] 선형큐 (Linear-Queue)
큐 (Queue) - FIFO(First in - First out) 선입 선출 구조 - 전단(front) : 삭제가 일어나는 곳 - 후단(rear) : 삽입이 일어나는 곳 큐 ADT (추상 자료형) - 0개 이상의 요소들로 구성된 선형 리스트 void init_queue(queue *q) 큐 초기화 int is_full(queue *q) 포화 상태 검출 함수 int is_empty(queue *q) 공백 상태 검출 함수 void enqueue(queue *q, element item) 큐의 후단(rear)에 item 삽입 element dequeue(queue *q) 큐의 전단(front)에서 item 리턴 후 삭제 element peek(queue *q) 큐의 전단(front)에서 item 선택 선형..
2021.12.06 -
[Data Structure] 스택 - 미로찾기
알고리즘 현재 위치에서 갈 수 있는 모든 위치(상하좌우) 모두 stack에 push --(1) stack에서 pop 시켜서 pop 시킨 것을 현재 위치로 설정하고 (1) 계속 반복 -> 갈 곳 = stack에서 pop, 안 간 곳 = 그대로 stack에 존재 -> 이미 간 곳을 또 가면 이미 stack에 1번 저장되었기 때문에 다시 stack에 push X typedef struct { int r; // 로우(row) int c; // 컬럼(column) }cur_locate; // 현재 위치를 좌표 (r, c)로 표현 typedef struct { int top; cur_locate maze[MAX_STACK_SIZE]; }stack; char maze[MAZE_SIZE][MAZE_SIZE] = { /..
2021.12.03 -
[Data Structure] 스택 - 중위표기수식 -> 후위표기수식
※ 연산자 우선순위 : ( ) stack에 존재하는 연산자 pop한 후, 다음 처리 연산자 push 왼쪽 괄호 -> 오른쪽 괄호 만날때 까지, 왼쪽 괄호위에 push된 연산자 pop int priority(char op) { // 연산자 우선순위 switch (op) { case '(': case')': return 1; case '+': case'-': return 2; case '*': case'/': return 3; } return -1; } void infix_to_postfix(const char* str) { stack s; init_stack(..
2021.12.02 -
[Data Structure] 스택 - 후위 표기 계산
알고리즘 - 후위 표기 수식 str이 존재 str에서 피연산자(숫자)를 만나면 stack에 push str에서 연산자를 만나면 stack에서 pop2번 (숫자1, 숫자2) pop한 숫자 2개를 연산자로 계산 계산결과를 stack에 다시 push int postfixCalc(const char*str) { // 후위 표기 수식을 계산한 값 리턴 stack s; init_stack(&s); char ch; // 후위 표기 수식 str에서 하나하나 추출하는 자료형 int value = 0; // str에서 추출한 숫자가 문자형일때 '1', '2' 숫자로 변환 1, 2 해서 저장하는 자료형 int pop1, pop2; // pop1 = 스택에서 pop한 첫번째 값, pop2 = 스택에서 pop한 두번째 값 in..
2021.12.02 -
[Data Structure] 수식 표기법 (전위/중위/후위)
수식 표기법 - 전위(prefix) : 연산자(+,-,/,*)를 먼저 표시 - 중위(infix) : 보통 우리가 쓰는 수식 표기법 - 후위(postfix) : 피연산자를 먼저 표시 ① 중위 → 후위 : 8/2-3+3×2 1. 연산자 우선순위에 맞게 괄호로 묶기 (1) (8/2) (2) (3×2) (3) ((8/2)-3) (4) (((8/2)-3) + (3×2)) ≫ (((8/2)-3) + (3×2)) 2. 연산자를 괄호 우측으로 옮기기 (괄호로 적게 묶인 연산자부터 가장 바깥 괄호로) ≫ (((82)/3)-(32)×)+ 3. 괄호 없애기 ≫ 82/3-32×+ ② 중위 → 전위 : 8/2-3+3×2 1. 연산자 우선순위에 맞게 괄호로 묶기 (1) (8/2) (2) (3×2) (3) ((8/2)-3) (4)..
2021.12.02 -
[Java] Wrapper 클래스
Wrapper 클래스 - boolean, char, byte, short, int, long, float, double 8개의 기본타입을 객체로 다루기 위해 JDK에 만들어진 클래스 기본타입 boolean char byte short int long float double Wrapper 클래스 Boolean Character Byte Short Integer Long Float Double 객체 생성 (valueOf) - Character는 문자열로 객체 생성 X - Character를 제외한 나머지 Wrapper 클래스는 문자열로 객체 생성 가능 Integer i = Integer.valueOf(10); Integer i = Integer.valueOf("10"); Character c = Charac..
2021.12.01 -
[Data Structure] 스택 - 괄호 검사
괄호 검사 - 대괄호 [], 중괄호 {}, 소괄호 ()가 서로 짝이 맞는지 검사 왼쪽 괄호 개수 = 오른쪽 괄호 개수 같은 종류의 괄호이면, 왼쪽 괄호가 더 먼저 나와야 한다 서로 다른 종류의 괄호면 쌍을 이루면 안된다 알고리즘 - 하나의 문자열 str이 존재 str안에 왼쪽 괄호 [, {, (는 push를 통해서 stack에 저장 오른쪽 괄호 ], }, )를 만나면 stack에 저장된 왼쪽 괄호를 pop시켜서 서로 짝이 맞는지 확인 오른쪽 괄호를 만났는데 stack이 비어있거나, pop한 문자가 다르면 검사 실패 모든 괄호 검사가 끝난 다음, stack을 봤는데 stack이 안비워져 있다면 검사 실패 int check_bracket(const char* str) { stack s; char ch, po..
2021.12.01 -
[명품 Java] 5장 실습문제 (상속)
[1~2] 다음 TV 클래스가 있다. class TV{ private int size; public TV(int size) { this.size = size; } protected int getSize() { return size; } } [5장 1번] 다음 main() 메소드와 실행 결과를 참고하여 TV를 상속받은 ColorTV 클래스를 작성하라. public static void main(String[] args) { ColorTV myTV = new ColorTV(32, 1024); myTV.printProperty(); } 32인치 1024컬러 ≫ 풀이 class ColorTV extends TV { private int color; public ColorTV(int size, int color)..
2021.12.01