μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- μλ°μ€ν¬λ¦½νΈ
- μ»΄ν¨ν°κ³Όν
- μν
- database
- μ±
- νμΌμ λ‘λ
- κΉλ―Έκ²½μλ§νμμ
- μΉνΌλΈλ¦¬μ±
- μλ°
- JavaScript
- λ μ
- λ°μ΄ν°λ² μ΄μ€
- Kλ°°ν°λ¦¬λ 볼루μ
- Python
- κ°λ°
- μ½λ©
- μΉνμ΄μ§λ§λ€κΈ°
- 리μ‘νΈ
- ComputerScience
- Kλ°°ν°λ¦¬
- css
- λ§μΌλ΄κ°μΈμμλ€μμ°λ€λ©΄
- κΉνλ¨
- λ°μν
- λΌνλΌμ€μλ§λ
- νλ‘κ·Έλλ°
- μ€λΌν΄
- Java
- νμ΄μ¬
- html
- Today
- Total
JiYoung Dev π₯
[λ°±μ€ 1874] μ€νμΌλ‘ μ€λ¦μ°¨μ μμ΄ λ§λ€κΈ° : Stack λ³Έλ¬Έ
[λ°±μ€ 1874] μ€νμΌλ‘ μ€λ¦μ°¨μ μμ΄ λ§λ€κΈ° : Stack
Shinjio 2024. 11. 5. 22:46π λ¬Έμ
μ€ν (stack)μ κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘° μ€ νλλ‘, μ»΄ν¨ν° νλ‘κ·Έλ¨μ μμ±ν λ μμ£Ό μ΄μ©λλ κ°λ μ΄λ€. μ€νμ μλ£λ₯Ό λ£λ (push) μ ꡬμ μλ£λ₯Ό λ½λ (pop) μ κ΅¬κ° κ°μ μ μΌ λμ€μ λ€μ΄κ° μλ£κ° μ μΌ λ¨Όμ λμ€λ (LIFO, Last in First out) νΉμ±μ κ°μ§κ³ μλ€.
1λΆν° nκΉμ§μ μλ₯Ό μ€νμ λ£μλ€κ° λ½μ λμ΄λμμΌλ‘μ¨, νλμ μμ΄μ λ§λ€ μ μλ€. μ΄λ, μ€νμ pushνλ μμλ λ°λμ μ€λ¦μ°¨μμ μ§ν€λλ‘ νλ€κ³ νμ. μμμ μμ΄μ΄ μ£Όμ΄μ‘μ λ μ€νμ μ΄μ©ν΄ κ·Έ μμ΄μ λ§λ€ μ μλμ§ μλμ§, μλ€λ©΄ μ΄λ€ μμλ‘ pushμ pop μ°μ°μ μνν΄μΌ νλμ§λ₯Ό μμλΌ μ μλ€. μ΄λ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νλΌ.
첫 μ€μ n (1 ≤ n ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° nκ°μ μ€μλ μμ΄μ μ΄λ£¨λ 1μ΄μ nμ΄νμ μ μκ° νλμ© μμλλ‘ μ£Όμ΄μ§λ€. λ¬Όλ‘ κ°μ μ μκ° λ λ² λμ€λ μΌμ μλ€.
μ λ ₯λ μμ΄μ λ§λ€κΈ° μν΄ νμν μ°μ°μ ν μ€μ ν κ°μ© μΆλ ₯νλ€. pushμ°μ°μ +λ‘, pop μ°μ°μ -λ‘ νννλλ‘ νλ€. λΆκ°λ₯ν κ²½μ° NOλ₯Ό μΆλ ₯νλ€.
π νμ΄
ν΄λΉ λ¬Έμ λ λ§ κ·Έλλ‘ μ€νμ νμ©ν΄μ νΈλ λ¬Έμ μ΄λ€.
μ²μμ λ¬Έμ ν΄λ΅ κ³Όμ μ μ νμ λμλ μ€ν κ΅¬μ‘°κ° νλ μκ³ , ν΄λΉ μ€νμ μ λ ₯ν κ° λλ‘ μμμ νΈλ λ¬Έμ μΈ μ€ μμλ€. κ·Έλ¬λ νλ€λ³΄λ μ€ν ꡬ쑰λ₯Ό νμ©νμ¬ μ λ ₯ λ°μ μμ΄μ λ§λλ λ¬Έμ μλ€.
μ΄ν΄νκΈ° μ½κ² νμ΄μ μ€λͺ νμλ©΄, μ€νμ μ΄μ©ν΄μ μ λ ₯ λ°μ μμ΄μ κ°κΉμ§ pushλ₯Ό ν΅ν΄ μ€νμ μμ ν μ λ ₯ λ°μ μμ΄μ κ°μ΄ λμ€λ©΄ popμ ν΅ν΄ μ€νμμ κΊΌλ΄ μΆλ ₯νλλ‘ νλ μ리μ΄λ€.
μμ μμ
8
4
3
6
8
7
5
2
1
μ΄λΌλ λ°μ΄ν°λ₯Ό μ λ ₯ λ°λλ€.
첫λ²μ§Έ 8μ μΆλ ₯νκ³ μ νλ μμ΄μ ν¬κΈ°μ΄κ³ , κ·Έ λ€μ μ€λΆν°κ° μμ΄μ μλ―Ένλ€.
λ¬Έμ λ₯Ό νκΈ° μν΄μλ μ€νμ νλ μμ±νκ³ , λλ²μ§Έ λ¬Έμμ΄μΈ '4'κ° λ λκΉμ§ μ€νμ 1λΆν° μμνλ μ«μλ₯Ό μλλ€(push)
μ΄ λ μ€νμλ 1,2,3,4κ° μμ¬μλ€.
μ«μλ₯Ό μλ€κ° μνλ κ°μΈ '4'κ° λλ©΄, μ΄ '4'λ μμ΄λ‘ μΆλ ₯νκΈ° μν΄ pop()μ μ§ννλ€.
κ·Έ λ€μ μ«μμΈ '3'μ μΆλ ₯νκΈ° μν΄μλ μ΄λ―Έ μ€νμ '3'μ΄ μμ¬μκΈ° λλ¬Έμ pop()λ§ μ§νν΄μ£Όλ©΄ λλ€.
μ΄ λ μ€νμλ 1,2κ° μμ¬μλ€.
κ·Έ λ€μ μ«μμΈ '6'μ μΆλ ₯νκΈ° μν΄μλ 5λΆν° λ€μ μ€νμ μμμΌ νλ€.(push())
λ λ€μ 6κΉμ§ μ€νμ μμΌλ©΄ 6μ pop()νλ€.
μ΄ λ μ€νμλ 1,2,5κ° μμ¬μλ€.
κ·Έ λ€μ μ«μμΈ '8'μ μΆλ ₯νκΈ° μν΄μλ 6λΆν° λ€μ μ€νμ μλλ€. λ§μ°¬κ°μ§λ‘ 8κΉμ§ μμΌλ©΄ 8μ pop()νλ€.
μ΄ λ μ€νμλ 1,2,5,7μ΄ μμ¬μλ€.
κ·Έ λ€μ μ«μμΈ '7', '5', '2', '1'μ μΆλ ₯νκΈ° μν΄μλ μ€νμμ pop()νμ¬ κΊΌλ΄λ©΄ λλ€.
μμ νμ΄λ₯Ό κ·μΉμΌλ‘ μ 리νλ©΄
λ§μ½ μμ°μλ³΄λ€ μμ΄μ μ«μκ° ν¬κ±°λ κ°λ€λ©΄
1. μμ°μμ μμ΄μ μ«μκ° κ°μμ§ λκΉμ§ μ€νμ μμ°μλ₯Ό μλλ€.
2. μμ°μμ μμ΄μ μ«μκ° κ°μμ§λ©΄ 1λ² popνλ€.
λ§μ½ μμ°μλ³΄λ€ μμ΄μ μ«μκ° μλ€λ©΄
1. popνλ€.
2. μ΄ λ popνμ¬ κΊΌλΈ μ«μκ° μμ΄μ μ«μλ³΄λ€ ν¬λ€λ©΄ ν΄λΉ μμ΄μ λ§λ€ μ μλ€.
β JAVA μ½λ
μ΄λ₯Ό javaλ‘ νλ©΄ μλμ κ°λ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class P1874_μ€νμΌλ‘μ€λ¦μ°¨μμμ΄λ§λ€κΈ° {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int countOfNumber = Integer.parseInt(br.readLine());
int[] numberArr = new int[countOfNumber];
//μμ΄ λ°°μ΄λ‘ μμ±
for(int i = 0 ; i < countOfNumber ; i++){
numberArr[i] = Integer.parseInt(br.readLine());
}
//μ€ν : LIFO
Stack<Integer> stack = new Stack<>();
int number = 1; //1λΆν° μμνλ μμ°μ
Boolean result = true;
StringBuilder answer = new StringBuilder();
//μμ΄μ ν¬κΈ°λ§νΌ λ°λ³΅νλ€.
for(int i = 0 ; i < countOfNumber ; i++){
int su = numberArr[i]; //μμ΄
//μμ΄μ μκ° μμ°μλ³΄λ€ ν¬κ±°λ κ°μ λμλ μμ΄μ μμ μμ°μκ° κ°μμ§ λκΉμ§ push ν λ§μ§λ§ ν λ²μ pop νλ€. => pop: μμ΄ μΆλ ₯
if(su >= number){
while(su >= number){
stack.push(number++);
answer.append("+\n");
}
stack.pop();
answer.append("-\n");
}else{ //μμ΄μ μκ° μμ°μλ³΄λ€ μμ λμλ popνλ€. λ¨, κΊΌλΈ μκ° μμ΄μ μλ³΄λ€ ν¬λ€λ©΄ μ£Όμ΄μ§ λ°©μλλ‘ μμ΄μ λ§λ€μ§ λͺ»νλ€.
int n = stack.pop();
if(n > su){
System.out.println("NO");
result = false;
break;
}else{
answer.append("-\n");
}
}
}
if (result) {
System.out.println(answer.toString());
}
}
}
'Study > μκ³ λ¦¬μ¦, ꡬν λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ 11003] μ΅μκ° μ°ΎκΈ° : Deque (2) | 2024.10.29 |
---|---|
[λ°±μ€ 2563] μ΄μ°¨μ λ°°μ΄ : μμ’ μ΄ (0) | 2023.11.08 |