본문 바로가기
T.I.L. :: Today I Learned/항해99 14기 온보딩

3월 18일 Day13.

by DaSsom 2023. 3. 18.

알고리즘 스터디 종료 ! 시원 섭섭 아쉬운게 많다. 고작 2주였지만 팀원들이랑 벌써 정들어버렸다 .... 그리고 혼자 공부할 때보다 더 확실하게 공부할 수 있었어서 좋았는데,, 만약 항해 기간이 99일이 아니라 6개월이었다면? 알고리즘 스터디를 계속하면서 천천히 공부했을텐데 빠듯하다보니 충분한 시간을 들일 여유가 없다. 그래도 이렇게 이어진 인연이 또 다음에 어떻게 이어질지 궁금하기 때문에 !! 다음을 기약하며 열심히 공부해야겠당 ~.~ 즐거웠던 18조.. 다음에 꼭 다시 만나용

 

🤓


  • 오늘의 목표 :: 아이디어 떠올리고 코드 구현 해보기, 많은 고민 하기, 기초부터 차분히 다져나가기

 

  • T.I.L

<자료구조 & 알고리즘>

 

* 스택

: 데이터를 일시적으로 저장하기 위해 사용하는 구조, 후입선출

↓ 스택 만들기

// int형 스택 만들기
public class IntStack {
    private int max;    // 스택 용량 : 스택에 쌓을 수 있는 최대 데이터 수
    private int ptr;    // 스택 포인터 : 현재 스택에 쌓여있는 데이터 수를 나타냄
    private int[] stk;  // 스택 본체용 배열 (의 요솟수는 max와 같다)

    // 실행 시 예외 : 스택이 비어있음
    public class EmptyIntStackException extends RuntimeException {
        public EmptyIntStackException() {
        }
    }

    // 실행 시 예외 : 스택이 가득참
    public class OverflowIntStackException extends RuntimeException {
        public OverflowIntStackException() {
        }
    }

    // 생성자 -> 스택은 반드시 0 이상 max 이하가 됨
    public IntStack(int capacity) {
        ptr = 0;                        // 생성 시 스택은 비어있으므로 0;
        max = capacity;                 // 스택의 용량 값을 받아서 max에 지정
        try {
            stk = new int[max];         // 스택 본체용 배열(크기 max)을 생성
        } catch (OutOfMemoryError e) {  // 생성할 수 없음
            max = 0;
        }
    }

    // 스택에 x를 푸시
    public int push(int x) throws OverflowIntStackException {
        if (ptr == max) {               // 스택이 가득찼다면
            throw new OverflowIntStackException();
        }
        return stk[ptr++] = x;
    }

    // 스택에 x를 팝
    public int pop() throws EmptyIntStackException {
        if (ptr == 0) {                // 스택이 비었으면
            throw new EmptyIntStackException();
        }
        return stk[--ptr];
    }

    // 스택의 꼭대기에 있는 데이터를 몰래 엿보기 : peek
    public int peek() throws EmptyIntStackException {
        if (ptr == 0) {
            throw new EmptyIntStackException();
        }
        return stk[ptr - 1];
    }

    // 스택에서 특정 원소 검색하기 : indexOf
    public int indexOf(int x) {
        for (int i = ptr - 1; i >= 0; i--) {  // 꼭대기부터 바닥으로 순회
            if (stk[i] == x) {
                return i;
            }
        }
        return -1;
    }

    // 스택에서 모든 요소 삭제 : clear
    public void clear() {
        ptr = 0;
    }

    // 스택의 용량 확인 : capacity
    public int capacity() {
        return max;
    }

    // 스택이 비어있는지 확인 : isEmpty
    public boolean isEmpty() {
        return ptr == 0;
    }

    // 스택이 가득 찼는지 확인 : isFull
    public boolean isFull() {
        return ptr == max;
    }

    // 스택 안의 데이터를 출력 ( 바닥 -> 꼭대기 )
    public void dump() {
        if (ptr == 0) {
            System.out.println("스택이 비어있습니다.");
        } else {
            for (int i = 0; i < ptr; i++) {
                System.out.println(stk[i] + " ");
                System.out.println();
            }
        }
    }

}

 

 

 

 

  • 오늘 푼 문제

분수찾기 :: https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

 

덩치 :: https://www.acmicpc.net/problem/7568

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

'T.I.L. :: Today I Learned > 항해99 14기 온보딩' 카테고리의 다른 글

3월 21일 Day16.  (0) 2023.03.21
3월 20일 Day15.  (0) 2023.03.20
3월 17일 Day12.  (0) 2023.03.17
3월 16일 Day11.  (0) 2023.03.16
3월 15일 Day10.  (0) 2023.03.15