알고리즘 스터디 종료 ! 시원 섭섭 아쉬운게 많다. 고작 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
'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 |