Stack 11

[1주차] on-boarding 미션

1. 포비, 크롱 책 페이지 펼치기 ## 🚀 기능 요구 사항 포비와 크롱이 페이지 번호가 1부터 시작되는 400 페이지의 책을 주웠다. 책을 살펴보니 왼쪽 페이지는 홀수, 오른쪽 페이지는 짝수 번호이고 모든 페이지에는 번호가 적혀있었다. 책이 마음에 든 포비와 크롱은 페이지 번호 게임을 통해 게임에서 이긴 사람이 책을 갖기로 한다. 페이지 번호 게임의 규칙은 아래와 같다. 1. 책을 임의로 펼친다. 2. 왼쪽 페이지 번호의 각 자리 숫자를 모두 더하거나, 모두 곱해 가장 큰 수를 구한다. 3. 오른쪽 페이지 번호의 각 자리 숫자를 모두 더하거나, 모두 곱해 가장 큰 수를 구한다. 4. 2~3 과정에서 가장 큰 수를 본인의 점수로 한다. 5. 점수를 비교해 가장 높은 사람이 게임의 승자가 된다. 6. 시작..

Chapter 02. 선형 자료구조

2.1 자료구조 소개 Def) 자료 구조(Data Structure): 자료를 효율적으로 관리하기 위한 구조 - 목적에 맞게 사용한 자료구조는 실행시간 단축이나 메모리 용량 절감 효과가 있다. - 선형 자료구조 / 비선형 자료구조 Note) 자료구조의 구현 - 추상 자료형(absract Data type, ADT) -> 자료 형태와 자료에 대한 연산을 정의한 것 -> 구체적인 구현 방법은 명시하지 않는다. (추상 클래스, 인터페이스) 2.2 배열 Note) 배열 - 데이터가 메모리 상에 연속적으로 저장된다 . - 데이터와 인덱스가 1:1 대응으로 구성된다. - 단점 -> 데이터 추가/ 삭제가 번거롭다. -> 미리 최대 길이를 정해서 생성한다. -> 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배..

Chapter 05. Stack, Queue (자료구조)

1. 올바른 괄호 import java.util.*; public class Main { public static void main(String[] args){ Main T = new Main(); Scanner in=new Scanner(System.in); String str = in.next(); System.out.println(T.solution(str)); return ; } public String solution(String str){ String answer = "YES"; Stack stack = new Stack(); for(char x : str.toCharArray() ){ if(x == '(') stack.push(x); else{ if(stack.isEmpty()) return..

Part 08 Graph (그래프)

Note) 그래프 - 그래프는 비선형 자료구조이다. -> 노드와 엣지로 구성된다. -> 방향성과 가중치(weight)를 줄 수 있다. -> 자바에서는 그래프를 구성하는 노드와 엣지가 제공되지 않는다. -> 직접 노드와 엣지를 구성해서 그래프를 만든다. - 비선형 자료구조에서 원하는 데이터 찾기 1) 데이터 하나 읽기 2) 다음 번에 읽을 것을 예약 (연결된 데이터를 찾기) 3) 예약된 것을 하나 꺼내기 4) 2,3 반복 - 예약 목록을 스택, 큐에 따라 다르게 탐색할 수 있다. -> 큐 이용: 너비우선탐색 (BFS) -> 스택 이용: 깊이 이용 탐색 (DFS) -> 두 가지는 탐색 순서만 다르다. Ex) BFS - Queue를 이용해서 만든다. import java.util.*; // 방향성과 가중치가 ..

Part 05 Stack과 Queue

Note) list interface의 메서드 - list.remove(인덱스) : 꺼내서 제거 - pop() -> 인덱스 말고 데이터의 값을 제거하려면? ex) 데이터가 int일 때 => list.remove(Integer.valueOf(지우고 싶은 값)) 으로도 표현 가능 - list.get(인덱스): 꺼내서 보여준다. - peek() 1. Stack - LIFO구조 - push / pop / peek 2. Queue - FIFO구조 - offer / poll / peek 3. Deque - 앞이나 뒤에서도 꺼낼 수 있다. - 인터페이스로 제공 - offer(First / Last) / poll(First / Last) / peek(First / Last) Ex) 올바른 괄호 - 괄호가 올바르게 입력..

Code up 3102 STL stack

Ex) 첫째줄에 N이 입력된다. (1N개가 입력된다. 출처: https://codeup.kr/problem.php?id=3102 package D220316; import java.util.Scanner; interface IStackble100{ boolean empty(); void push(int nData); int peek(); void pop(); void print(); } public class STL implements IStackble100{ private int[] mnArray; private int mnCapacity; private int mnTop; public STL (int nCapacity) { mnArray = new int[nCapacity]; mnCapacity = ..

Code up 3117 0은 빼!

Ex) 정수k가 입력되고 k줄만큼 숫자들이 입력된다. 마지막에 남은 숫자들의 합을 출력한다. - stack을 이용하여 양수가 입력되면 push(), 0이 입력되면 pop() import java.util.Scanner; interface IStackableZero{ boolean empty(); void pop(); void push(int nData); int peek(); void print(); } public class MinusZero implements IStackableZero{ private int[] mnArray; private int mnTop; private int mnCapacity; public MinusZero(int nCapacity) { mnArray = new int[nC..

Code up 1714 숫자 거꾸로 출력하기

Ex) Stack을 이용해서 숫자 거꾸로 출력하기 package D220310; import java.util.Scanner; import java.math.*; interface IStackable17141{ boolean empty(); int peek(); void pop(); void push(int nData); // int search(int nData); } public class ReversePrint implements IStackable17141{ private int [] mnArray; private int mnCapacity; private int mnTop; public ReversePrint(int nCapacity) { mnArray = new int[nCapacity]; m..

Java로 Stack 구현하기

Ex) interface IStackable0{ boolean empty(); int peek(); void pop(); void push(int nData); // int search(int nData); } public class StackPractice implements IStackable0{ private int [] mnArray; private int mnCapacity; private int mnTop; public StackPractice(int nCapacity) { mnArray = new int[nCapacity]; mnCapacity = nCapacity; mnTop = 0; } public boolean empty() { return (0 == mnTop); } public vo..