728x90
μ€ν μ€ν¨
μκ° μ ν: 0.5 μ΄ (μΆκ° μκ° μμ)
λ©λͺ¨λ¦¬ μ ν: 256 MB
λ¬Έμ
μ μλ₯Ό μ μ₯νλ μ€νμ ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ λ€μ― κ°μ§μ΄λ€.
- push X: μ μ Xλ₯Ό μ€νμ λ£λ μ°μ°μ΄λ€.
- pop: μ€νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- size: μ€νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- empty: μ€νμ΄ λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
- top: μ€νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
μ λ ₯
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 ≤ N ≤ 10,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§ μμ λͺ λ Ήμ΄ μ£Όμ΄μ§λ κ²½μ°λ μλ€.
μΆλ ₯
μΆλ ₯ν΄μΌνλ λͺ λ Ήμ΄ μ£Όμ΄μ§ λλ§λ€, ν μ€μ νλμ© μΆλ ₯νλ€.
import java.util.Scanner;
//2021.06.21 10828λ²: μ€ν
//μκ° μ΄κ³Ό (μκ°μ ν 0.5μ΄) -> λΉ λ₯Έ μ
μΆλ ₯ 곡λΆνκΈ°!! 15552 λ² λ¬Έμ μ°Έκ³
public class baekjoon10828 {
public static class linkedStack{
private class Node{
int data;
Node link;
}
private Node top=null;
private int count=0;
// push X: μ μ Xλ₯Ό μ€νμ λ£λ μ°μ°μ΄λ€.
public void push(int item) {//topκ³Ό newNode κ°μ§κ³ νκΈ°
Node newNode=new Node();
newNode.data=item;
newNode.link=top;
top=newNode;
count++;
}
//pop: μ€νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€.
//λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
public int pop() {//topλ§ κ°μ§κ³ νκΈ°
int data;
if(isEmpty()==0) {
data=top.data;
top=top.link;
count--;
}
else
data=-1;
return data;
}
//empty: μ€νμ΄ λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
public int isEmpty() {
if(top==null)//λΉμ΄μμΌλ©΄
return 1;
return 0;
}
//size: μ€νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
public int getSize() {
return count;
}
//top: μ€νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€.
//λ§μ½ μ€νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
public int getTop(){
if(isEmpty()==1)
return -1;
return top.data;
}
}
//νλ‘κ·Έλ¨ μ€ν
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
linkedStack stack=new linkedStack();
int instructionNum;
instructionNum=scanner.nextInt();
for(int i=0; i<instructionNum;i++) {
String instruction=scanner.next();
switch(instruction){
case "push":
int item=scanner.nextInt();
stack.push(item);
break;
case "pop":
System.out.println(stack.pop());
break;
case "size":
System.out.println(stack.getSize());
break;
case "empty":
System.out.println(stack.isEmpty());
break;
case "top":
System.out.println(stack.getTop());
break;
}
}
scanner.close();
}
}
- μ μλ₯Ό μ μ₯νλ μ€ν ꡬν: μ°κ²° μλ£κ΅¬μ‘°λ₯Ό μ΄μ©ν μ€ν ꡬν
- static ν΄λμ€λ‘ μ€ν ꡬν
- switchλ¬Έμ μ¬μ©νμ¬ μ λ ₯λ°μ λ¬Έμμ΄λ³ κ° λ©μλ νΈμΆ
- νλ¦° λΆλΆ: μκ° μ΄κ³Ό
1. μ€ν (stack)
- μ μλ₯Ό μλ―μ΄ μλ£λ₯Ό 차곑차곑 μμμ¬λ¦° ννμ μλ£κ΅¬μ‘°
- νμ μ μΆ κ΅¬μ‘°(LIFO: Last-In First-out) → top μμλ§ μ μ₯λ μμμ μ κ·Όν μ μλ€.
- top : μ€νμ κ°μ₯ μμ λμΈ μμλ₯Ό κ°λ¦¬ν¨λ€.
- μ€νμ μ°μ°:
- push(s, item) : μ½μ , μ€ν sμ item(μμ)μ μ½μ νλ μ°μ°
- pop(s) : μμ , μ€ν sμ topμ μλ μμλ₯Ό μμ νμ¬ λ¦¬ν΄νλ μ°μ°
- + μΆκ° μ°μ° - peek(s) : μ€ν sμ topμ μλ μμλ₯Ό μμ νμ§ μκ³ λ¦¬ν΄νλ μ°μ°
- μ€νμ ꡬν:
- μμ°¨ μλ£κ΅¬μ‘° - 1μ°¨μ λ°°μ΄μ μ΄μ©νμ¬ κ΅¬ν. λ¨μ ) κ³΅κ° λλΉ κ°λ₯μ± λμ, ν¬κΈ° λ³κ²½ λΉν¨μ¨μ
- μ°κ²° μλ£κ΅¬μ‘° - λ¨μ μ°κ²° 리μ€νΈλ₯Ό μ΄μ©νμ¬ κ΅¬ν. μ€νμ μμ νλ = λ Έλ νλ
1.1 μ€νμ ꡬν - μ°κ²° μλ£κ΅¬μ‘°
- λ¨μ μ°κ²° 리μ€νΈλ₯Ό μ΄μ©νμ¬ κ΅¬ν
- μ€ν μμ νλ = λ¨μ μ°κ²° 리μ€νΈμ λ ΈνΈ νλ
- μμ°¨ μλ£κ΅¬μ‘°μ λ¨μ 극볡 κ°λ₯
- λ³μ top : λ¨μ μ°κ²° 리μ€νΈμ 첫λ²μ§Έ λ
Έλ κ°λ¦¬ν€λ λ³μ
- empty μν : top == null (μ΄κΈ°μν)
- full μν : μ μλμ§ μμ
- μ°κ²° μλ£κ΅¬μ‘°λ₯Ό μ΄μ©ν μ€ν μ°μ°
- push(s, item) : λ¨μ μ°κ²° 리μ€νΈ μ€ν sμ κ°μ₯ μμ data κ°μΌλ‘ itemμ κ°μ§ λ Έλ μ½μ . <μμμκ° O(1)>
- pop(s) : λ¨μ μ°κ²° 리μ€νΈ μ€ν sμ 첫λ²μ§Έ λ Έλ μμ . μ¦, topμ΄ κ°λ¦¬ν€κ³ μλ λ Έλ μμ ν 리ν΄
public class MyLinkedStack {
private Node top =null //곡백 μ€ν μμ±
private class Node{//Nodeν΄λμ€
char data;
Node link
}
public boolean isEmpty(){
if(top == null) //empty μν : top == null
return true;
else
return false;
}
public void push(char item){//topκ³Ό itemλ§ μ΄μ©νμ¬ μ€νμ μ½μ
Node newNode= new Node();//μ½μ
ν itemλ₯Ό μ μ₯ν μ λ
Έλ μμ±
newNode.data=item; //μ λ
Έλμ dataμ item μ μ₯
newNode.link=top;
/*
λ§μ½ 곡백 μ€νμΌ κ²½μ° topμ null,
μ λ
Έλλ ν΄λΉ μ€νμ 첫λ²μ§Έ λ
Έλμ΄μ λ§μ§λ§ λ
Έλμ΄λ―λ‘ linkμ null μ μ₯ν΄μΌ ν¨
곡백 μ€νμ΄ μλ κ²½μ° topμ μ΄μ λ
Έλλ₯Ό κ°λ¦¬ν΄
μ λ
Έλλ μ΄μ λ
Έλλ₯Ό κ°λ¦¬μΌμΌ νλ―λ‘ top,
μ¦ μ΄μ λ
Έλλ₯Ό κ°λ¦¬ν€λ linkλ₯Ό λ°μ μ΄μ λ
Έλλ₯Ό κ°λ¦¬ν¨λ€.
*/
top=newNode; //topμ΄ μ λ
Έλ, μ¦ μ²«λ²μ§Έ λ
Έλλ₯Ό κ°λ¦¬ν€κ² νλ€.
}
public char pop(){ //topμ μ¬μ©νμ¬ μμ ν 리ν΄
if(isEmpty())
μμΈ λ°μ;
else{
char item=top.data; //topμ΄ κ°λ¦¬ν€λ λ
Έλμ dataλ₯Ό λ°λ‘ μ μ₯νλ€.
top=top.link; //topμ΄ μ²«λ²μ§Έ λ
Έλμ link, μ¦ λλ²μ§Έ λ
Έλλ₯Ό κ°λ¦¬ν€κ² νλ€.
//μ°κ²° 리μ€νΈμμ λ
Έλλ λ€λ₯Έ λ
Έλμμ μ°κ²°μ΄ λμ΄μ§λ©΄ ν΄λΉ λ
Έλλ μμ λλ€.
return item;
}
}
}
κ³΅λΆ μλ£
μλ°λ‘ λ°°μ°λ μ¬μ΄ μλ£κ΅¬μ‘°, μ 곡 μμ
728x90
'μ½λ© ν μ€νΈ > λ°±μ€ μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ λ°±μ€ μκ³ λ¦¬μ¦ / java ] 15552 - λΉ λ₯Έ A+B ( BufferedReader ) (0) | 2021.06.30 |
---|---|
[ λ°±μ€ μκ³ λ¦¬μ¦ / Java ] 1152 - λ¨μ΄μ κ°μ (0) | 2021.06.20 |