https://www.acmicpc.net/problem/28278
[1] λ¬Έμ
λ¬Έμ
μ μλ₯Ό μ μ₯νλ μ€νμ ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ λ€μ― κ°μ§μ΄λ€.
- 1 X: μ μ Xλ₯Ό μ€νμ λ£λλ€. (1 ≤ X ≤ 100,000)
- 2: μ€νμ μ μκ° μλ€λ©΄ 맨 μμ μ μλ₯Ό λΉΌκ³ μΆλ ₯νλ€. μλ€λ©΄ -1μ λμ μΆλ ₯νλ€.
- 3: μ€νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- 4: μ€νμ΄ λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
- 5: μ€νμ μ μκ° μλ€λ©΄ 맨 μμ μ μλ₯Ό μΆλ ₯νλ€. μλ€λ©΄ -1μ λμ μΆλ ₯νλ€.
μ λ ₯
첫째 μ€μ λͺ λ Ήμ μ Nμ΄ μ£Όμ΄μ§λ€. (1 ≤ N ≤ 1,000,000)
λμ§Έ μ€λΆν° Nκ° μ€μ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€.
μΆλ ₯μ μꡬνλ λͺ λ Ήμ νλ μ΄μ μ£Όμ΄μ§λ€.
μΆλ ₯
μΆλ ₯μ μꡬνλ λͺ λ Ήμ΄ μ£Όμ΄μ§ λλ§λ€ λͺ λ Ήμ κ²°κ³Όλ₯Ό ν μ€μ νλμ© μΆλ ₯νλ€.
μμ μ λ ₯ 1
9
4
1 3
1 5
3
2
5
2
2
5
μμ μΆλ ₯ 1
1
2
5
3
3
-1
-1
[2] μ λ΅ λ° ν΄μ
λ΄ νμΌλ‘ ν μ μμ΄μ... ꡬκΈλ§νμ¬ λ¬Έμ λ₯Ό νμλ€.
# μ λ΅ μ½λ
#include<stdio.h>
int stack[1000000], cnt = 0;
int main(){
int N, order, num;
scanf("%d", &N);
for(int i = 0; i<N; i++){
scanf("%d", &order);
switch(order){
case 1:
scanf("%d", &num);
stack[cnt] = num;
cnt++;
break;
case 2:
if(cnt == 0){
printf("-1\n");
}
else{
printf("%d\n", stack[cnt-1]);
cnt--;
}
break;
case 3:
printf("%d\n", cnt);
break;
case 4:
if(cnt == 0){
printf("1\n");
}
else{
printf("0\n");
}
break;
case 5:
if(cnt == 0){
printf("-1\n");
}
else{
printf("%d\n", stack[cnt-1]);
}
break;
default:
printf("wrong order\n");
}
}
}
(μ½λ μΆμ²: https://blog.naver.com/everydayeffort/223220902826 )
# ν΄μ
int stack[1000000], cnt = 0;: ν¬κΈ°κ° 1,000,000μΈ μ μ λ°°μ΄ stackκ³Ό μ€νμ νμ¬ ν¬κΈ°λ₯Ό λνλ΄λ cnt λ³μλ₯Ό μ μΈνλ€.
int main() { ... }: νλ‘κ·Έλ¨μ μ§μ μ μΈ main ν¨μλ₯Ό μ μλ€.
int N, order, num;: λ³μ N, order, numμ μ μΈνλ€. Nμ λͺ λ Ήμ μ, orderλ λͺ λ Ή μ’ λ₯, numμ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ μ μμ΄λ€.
scanf("%d", &N);: μ¬μ©μλ‘λΆν° λͺ λ Ήμ μ Nμ μ λ ₯λ°λλ€.
for(int i = 0; i<N; i++) { ... }: λ°λ³΅λ¬Έμ ν΅ν΄ Nλ²μ λͺ λ Ήμ μ²λ¦¬νλ€.
scanf("%d", &order);: κ° λͺ λ Ήμ μ’ λ₯λ₯Ό μ λ ₯λ°λλ€.
switch(order) { ... }: orderμ λ°λΌ λ€λ₯Έ λμμ μννλ€.
case 1: ...: μ μλ₯Ό μ€νμ λ£λ λͺ λ Ήμ΄λ€.
scanf("%d", &num);: μ λ ₯μΌλ‘ μ£Όμ΄μ§λ μ μ numμ λ°λλ€.
stack[cnt] = num;: νμ¬ μ€νμ cnt μμΉμ numμ μ μ₯νλ€.
cnt++;: μ€νμ ν¬κΈ°λ₯Ό 1 μ¦κ°μν΅λλ€.case 2: ...: μ€νμμ μ μλ₯Ό λΉΌκ³ μΆλ ₯νλ λͺ λ Ήμ΄λ€.
if(cnt == 0) { ... }: μ€νμ΄ λΉμ΄μμ κ²½μ°, -1μ μΆλ ₯νλ€.
else { ... }: μ€νμμ κ°μ₯ μμ μ μλ₯Ό λΉΌκ³ μΆλ ₯ν λ€, μ€νμ ν¬κΈ°λ₯Ό 1 κ°μμν¨λ€.
case 3: ...: μ€νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ λͺ λ Ήμ΄λ€.
printf("%d\n", cnt);: νμ¬ μ€νμ ν¬κΈ°λ₯Ό μΆλ ₯νλ€.
case 4: ...: μ€νμ΄ λΉμ΄μλμ§ μ¬λΆλ₯Ό μΆλ ₯νλ λͺ λ Ήμ΄λ€.
if(cnt == 0) { ... }: μ€νμ΄ λΉμ΄μμ κ²½μ°, 1μ μΆλ ₯νλ€.
else { ... }: μ€νμ΄ λΉμ΄μμ§ μμ κ²½μ°, 0μ μΆλ ₯νλ€.
case 5: ...: μ€νμμ κ°μ₯ μμ μ μλ₯Ό μΆλ ₯νλ λͺ λ Ήμ΄λ€.
if(cnt == 0) { ... }: μ€νμ΄ λΉμ΄μμ κ²½μ°, -1μ μΆλ ₯νλ€.
else { ... }: μ€νμμ κ°μ₯ μμ μ μλ₯Ό μΆλ ₯νλ€.
default: ...: μλͺ»λ λͺ λ ΉμΌ κ²½μ° λ©μμ§λ₯Ό μΆλ ₯νλ€.
[3] λλ μ
switch λ¬Έμ μ¬μ©νμ¬ κ° λͺ λ Ήμ΄μ λν μ²λ¦¬λ₯Ό λΆλ₯ν κ²μ΄ μΈμκΉμλ€.
(κ° caseμμ ν΄λΉνλ λμμ μννκ³ , μ λ ₯μ λ°λ₯Έ μΆλ ₯μ μ 곡νμ.)
[4] μΆκ° νμ΅
νμ μ€νμ κ°λ , μ°¨μ΄μ : https://blog.naver.com/strictlife/223165240439
#μ€νμ μ¬μ©νλ λ°©λ²
μ€ν(Stack)μ λ°μ΄ν°λ₯Ό μ μ₯νλ μλ£κ΅¬μ‘°λ‘, λ§μ§λ§μΌλ‘ λ€μ΄μ¨ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λκ°λ (Last-In-First-Out, LIFO) μμΉμ λ°λ₯Έλ€. μ΄κ²μ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ²μνλ λ° ν¨κ³Όμ μΈ κ΅¬μ‘°μ΄λ€. μλλ μ€νμ μ¬μ©νλ κΈ°λ³Έμ μΈ λ°©λ²μ΄λ€.
1. μ€νμ μμ±:
- μ€νμ λ°°μ΄ λλ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νμ¬ κ΅¬νλλ€. μΌλ°μ μΌλ‘ λ°°μ΄μ μ¬μ©νλ κ²½μ°κ° λ§μ΅λλ€.
μμ (CμΈμ΄):
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
2. Push (λ°μ΄ν° μΆκ°):
- μ€νμ λ°μ΄ν°λ₯Ό μΆκ°νλ€.
- μ€νμ΄ κ°λ μ°¨ μμΌλ©΄ μ€λ²νλ‘μ°(Overflow)κ° λ°μν μ μλ€.
μμ (CμΈμ΄):
void push(int data) {
if (top < MAX_SIZE - 1) {
stack[++top] = data;
} else {
printf("μ€νμ΄ κ°λ μ°Όμ΅λλ€.\n");
}
}
3. Pop (λ°μ΄ν° μ κ±°):
- μ€νμμ λ°μ΄ν°λ₯Ό μ κ±°νλ€.
- μ€νμ΄ λΉμ΄μμΌλ©΄ μΈλνλ‘μ°(Underflow)κ° λ°μν μ μλ€.
μμ (CμΈμ΄):
int pop() {
if (top >= 0) {
return stack[top--];
} else {
printf("μ€νμ΄ λΉμ΄μμ΅λλ€.\n");
return -1; // λλ λ€λ₯Έ κ°μ λ°ννμ¬ μΈλνλ‘μ°λ₯Ό μ릴 μ μμ΅λλ€.
}
}
4. Top (맨 μ λ°μ΄ν° μ‘°ν):
- μ€νμ 맨 μμ μλ λ°μ΄ν°λ₯Ό μ‘°ννλ€. (μμ νμ§ μκ³ )
- μ€νμ΄ λΉμ΄μμ κ²½μ° μμΈ μ²λ¦¬κ° νμνλ€.
μμ (CμΈμ΄):
int top() {
if (top >= 0) {
return stack[top];
} else {
printf("μ€νμ΄ λΉμ΄μμ΅λλ€.\n");
return -1; // λλ λ€λ₯Έ κ°μ λ°ννμ¬ μΈλνλ‘μ°λ₯Ό μ릴 μ μμ΅λλ€.
}
}
5. μ€νμ΄ λΉμ΄μλμ§ νμΈ:
- μ€νμ΄ λΉμ΄μλμ§ μ¬λΆλ₯Ό νμΈνλ€.
μμ (CμΈμ΄):
int isEmpty() {
return top == -1;
}
6. μ€νμ ν¬κΈ° νμΈ:
- μ€νμ νμ¬ μ μ₯λ λ°μ΄ν°μ κ°μλ₯Ό νμΈνλ€.
μμ (CμΈμ΄):
int size() {
return top + 1;
}
μ΄λ ΅λ€...!
'SWLUG > λ°±μ€ BEAKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C] λ°±μ€ BAEKJOON 2577λ²: μ«μμ κ°μ (2) | 2023.10.06 |
---|---|
[C] λ°±μ€ BAEKJOON 11866λ²: μμΈνΈμ€ λ¬Έμ 0 (0) | 2023.09.30 |
[C] λ°±μ€ BEAKJOON 19532λ²: μνμ λΉλλ©΄κ°μμ λλ€. (0) | 2023.09.27 |
[C] λ°±μ€ BEAKJOON 2164λ²: μΉ΄λ2 (0) | 2023.09.27 |
[C] λ°±μ€ BEAKJOON 10773λ²: μ λ‘ (0) | 2023.09.20 |