[C] λ°±μ€ BEAKJOON 10773λ²: μ λ‘
https://www.acmicpc.net/problem/10773
[1] λ¬Έμ
[2] μ λ΅ λ° ν΄μ€
μ λ΅ μ½λ
#include <stdio.h>
int cnt = 0;
int stack[100000];
void push(int n){
stack[cnt] = n;
cnt++;
}
void pop(){
cnt--;
stack[cnt] = 0;
}
int main()
{
int inputNumber;
int sum = 0;
scanf("%d", &inputNumber);
int data[inputNumber];
for(int i=0; i<inputNumber; i++){
scanf("%d", &data[i]);
if(data[i]==0){
pop();
}else{
push(data[i]);
}
}
for(int i=0; i<cnt; i++){
sum+=stack[i];
}
printf("%d\n", sum);
return 0;
}
ν΄μ
μ΄ μ½λλ μ€νμ νμ©νμ¬ 0μ΄ μ λ ₯λ λλ§λ€ popμ μννκ³ ,
0μ΄ μλ κ²½μ°μλ pushλ₯Ό μννμ¬ μ€νμ κ°μ μ‘°μνλ€.
κ·Έλ¦¬κ³ λ§μ§λ§μ μ€νμ μλ κ°λ€μ λͺ¨λ λν λ€ κ·Έ κ°μ μΆλ ₯νλ€.
1. int main(): νλ‘κ·Έλ¨μ μμ μ§μ μ λνλΈλ€.
2. int inputNumber;: μ¬μ©μλ‘λΆν° μ λ ₯ λ°μ μ μμ κ°μλ₯Ό μ μ₯ν λ³μλ₯Ό μ μΈνλ€.
3. int sum = 0;: μ€νμ μ μ₯λ μ«μλ€μ ν©κ³λ₯Ό μ μ₯ν λ³μλ₯Ό μ΄κΈ°ννλ€.
4. scanf("%d", &inputNumber);: μ¬μ©μλ‘λΆν° μ μλ₯Ό μ λ ₯λ°μ inputNumberμ μ μ₯νλ€.
5. int data[inputNumber];: ν¬κΈ°κ° inputNumberμΈ λ°°μ΄ dataλ₯Ό μ μΈνλ€. μ΄ λ°°μ΄μ μ λ ₯λ μ μλ₯Ό μ μ₯ν μ©λλ‘ μ¬μ©λλ€.
6. for(int i=0; i<inputNumber; i++){...}: μ λ ₯ λ°μ μ«μμ κ°μλ§νΌ λ°λ³΅νλ€.
7. scanf("%d", &data[i]);: μ¬μ©μλ‘λΆν° μ μλ₯Ό μ λ ₯λ°μ data[i]μ μ μ₯νλ€.
8. if(data[i]==0){...}else{...}: νμ¬ μ λ ₯λ μ«μκ° 0μΈμ§λ₯Ό κ²μ¬νλ€.
9. pop();: λ§μ½ 0μ΄λ©΄, pop ν¨μλ₯Ό νΈμΆνμ¬ μ€νμμ κ°μ μ κ±°νλ€.
10. else λΈλ‘μμ push(data[i]);: 0μ΄ μλλ©΄, push ν¨μλ₯Ό νΈμΆνμ¬ μ€νμ κ°μ μΆκ°νλ€.
11. for(int i=0; i<cnt; i++){...}: νμ¬ μ€νμ μ μ₯λ κ°λ€μ ν©μ κ³μ°νλ€.
12. sum+=stack[i];: stack[i]μ μ μ₯λ κ°μ sumμ λνλ€.
13. printf("%d\n", sum);: κ³μ°λ ν©μ μΆλ ₯νλ€.
14. return 0;: νλ‘κ·Έλ¨μ μ’ λ£νκ³ μ μμ μΌλ‘ μ’ λ£λμμμ λνλΈλ€.
μ½λ μΆμ²:
https://2018-start.tistory.com/121
[3] μΆκ° νμ΅
μ€νμ΄λ?
μ€ν(stack)μ μ νμ μΌλ‘ μ κ·Όν μ μλ λμ΄ κ΅¬μ‘°μ΄λ€. κ·Έ μ κ·Ό λ°©λ²μ μΈμ λ λͺ©λ‘μ λμμλ§ μΌμ΄λλ€. λλ¨Όμ λ΄κΈ° λͺ©λ‘(Pushdown list)μ΄λΌκ³ λ νλ€.
μ€νμ ν μͺ½ λμμλ§ μλ£λ₯Ό λ£κ±°λ λΊ μ μλ μ ν ꡬ쑰(LIFO - Last In First Out)μΌλ‘ λμ΄ μλ€. μλ£λ₯Ό λ£λ κ²μ 'λ°μ΄λ£λλ€' νμ¬ νΈμ¬(push)λΌκ³ νκ³ λ°λλ‘ λ£μ΄λ μλ£λ₯Ό κΊΌλ΄λ κ²μ ν(pop)μ΄λΌκ³ νλλ°, μ΄λ κΊΌλ΄μ§λ μλ£λ κ°μ₯ μ΅κ·Όμ νΈμ¬ν μλ£λΆν° λμ€κ² λλ€. μ΄μ²λΌ λμ€μ λ£μ κ°μ΄ λ¨Όμ λμ€λ κ²μ LIFO ꡬ쑰λΌκ³ νλ€.
μ΄λ₯Όν
λ©΄, aλΆν° bμ cλ₯Ό μμλλ‘ λ£μ λ€μ μλ£λ₯Ό νλμ© κΊΌλ΄λ©΄ cλΆν° bμ aμ μμλ‘ λμ€κ² λλ€. Sλ₯Ό μ€ν, xλ₯Ό λ°μ΄ν° μμ(element)λΌκ³ νμ. κ·Έλ¬λ©΄ μ€νμμλ μλμ κ°μ μ€μν μ°μ°μ΄ μ‘΄μ¬νλ κ²μ μ μ μλ€.
- S.top(): μ€νμ κ°μ₯ μ λ°μ΄ν°λ₯Ό λ°ννλ€. λ§μ½ μ€νμ΄ λΉμλ€λ©΄ μ΄ μ°μ°μ μ μλΆκ° μνμ΄λ€.
- S.pop(): μ€νμ κ°μ₯ μ λ°μ΄ν°λ₯Ό μμ νλ€. μ€νμ΄ λΉμλ€λ©΄ μ°μ° μ μλΆκ° μν.
- S.push(): μ€νμ κ°μ₯ μ λ°μ΄ν°λ‘ topμ΄ κ°λ¦¬ν€λ μ리 μμ(top = top + 1) λ©λͺ¨λ¦¬λ₯Ό μμ±, λ°μ΄ν° xλ₯Ό λ£λλ€.
- S.empty(): μ€νμ΄ λΉμλ€λ©΄ 1μ λ°ννκ³ ,κ·Έλ μ§ μλ€λ©΄ 0μ λ°ννλ€.
λν, μ€νμ°μ°μ λͺ©λ‘(list) μ°μ°μΌλ‘ ννν μλ μλ€.
- S.top(): S.retrieve(S.first())
- S.pop(): S.top(),S.delete(S.first())
- S.push():S.insert(x,pNull)
- S.empty():S.first()==pNull
μ»΄ν¨ν°μμ ν¬μΈν°λΌκ³ νλ μλ£μ μμΉ νμμμ λ£κ³ λΉΌλ λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄μ μ€νμ μ΄μ©νλ€. μ£Όλ‘ ν¨μλ₯Ό νΈμΆν λ μΈμμ μ λ¬ λ±μ μ΄μ©λλ€. LIFOμ νΉμ§μ μ΄μ©νμ¬ μν΄λλ νκΈ°λ²μ μ΄μ©ν νλ‘κ·Έλλ° μΈμ΄μΈ ν¬μ€(Forth) λ±μμλ μ΄μ©λλ€.
μΆμ²:
https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D
μ΄μΈμ μ°Έκ³ νλ©΄ μ’μ λΈλ‘κ·Έ μλ£:
[4] λλ μ
λ¬Έμ 쑰건μ λ³΄κ³ μ²μμ λ°°μ΄μ νμ©ν΄μΌ νλ μΆμλλ°, λ무 볡μ‘ν΄μ Έμ ꡬνν΄λΌ μμ μ΄ μμλ€.
κ·Έλμ λ€λ₯Έ νμ΄ κΈμ μ°Ύμ보μλλ°, μ€νμ΄λΌλ κ°λ μ μλ‘κ² μκ² λμλ€.
κ°λ μμ²΄κ° μ½μ§ μλ€κ³ λκ»΄μ‘λ€. κ·Έλλ μμ£Ό μ¬μ©νλ€λ³΄λ©΄ μ΅μν΄μ§λ €λ?
λ¨μν μ¬μ©λ²μ μ΅μν΄μ ΈμΌ νλκ² μλλΌ, μλ£κ΅¬μ‘°μ λν΄μλ μ΄ν΄λ₯Ό ν΄μΌ νλ κ² κ°μλ€...
'SWLUG > λ°±μ€ BEAKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C] λ°±μ€ BEAKJOON 19532λ²: μνμ λΉλλ©΄κ°μμ λλ€. (0) | 2023.09.27 |
---|---|
[C] λ°±μ€ BEAKJOON 2164λ²: μΉ΄λ2 (0) | 2023.09.27 |
[C] λ°±μ€ BEAKJOON 1978λ²: μμ μ°ΎκΈ° (0) | 2023.09.19 |
[python/νμ΄μ¬] λ°±μ€ BEAKJOON 10869λ²: μ¬μΉ μ°μ° (0) | 2023.06.25 |
[python/νμ΄μ¬] λ°±μ€ BEAKJOON 1463λ²: 1λ‘ λ§λ€κΈ° (0) | 2023.06.25 |