๋ฐฑ์ค 1874: ์คํ ์์ด
https://www.acmicpc.net/problem/1874
- ์์ด์ ์ด๋ฃจ๋ ์์ ๊ฐ์ n์ ์ ๋ ฅ๋ฐ๋๋ค.
- ๊ทธ ๋ค์ ์ค ๋ถํฐ ์ฐจ๋ก๋๋ก 1์ด์ n ์ดํ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. (์ค๋ณต๋๋ ์๋ ์์)
- ์ ๋ ฅ๋ ์์ด์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ฐ์ฐ์ ํ ์ค์ ํ ๊ฐ์ฉ ์ถ๋ ฅํ๋ค.
//push= +, pop = -
- ๋ง๋ค ์ ์๋ค๋ฉด push์ pop์ ํํํ๊ณ ์๋๋ค๋ฉด "NO"๋ผ๊ณ ํ์ํ๋ค.
์์งํ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๋๋ฌด ์ดํด๊ฐ ์๋ผ์ ๊ณ์ ์ฝ์๋ค.
์คํ ์์ด์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํด์ ์ฒ์์ ๋ฌธ์ ๋ฅผ ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค.
๊ตฌ๊ธ๋ง์ ํด๋ณด๊ณ ๋์์ผ ์ ๋๋ก ๋ฌธ์ ๊ฐ ์ดํด๊ฐ ๋์๋ค!-.,-
[์ฐธ๊ณ ] https://wtg-study.tistory.com/53
- LIFO ๋ฐฉ์์ ์ค๋ฆ์ฐจ์์ธ ์คํ์ 3๊ฐ์ง ๊ท์น์ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ดํ ์ ์๋ค.
->์คํ์ ์๋จ ๋ถ๋ถ ์๊ฐ ๋ชฉํ์๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ(push)
-> ์คํ์ ์๋จ ๋ถ๋ถ ์์ ๋ชฉํ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ(pop)
-> ์คํ์ ์๋จ ๋ถ๋ถ ์๊ฐ ๋ชฉํ์๋ณด๋ค ๋์ ๊ฒฝ์ฐ(NO)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100000
char result[SIZE * 2];
int stack[SIZE];
int top = -1;
int main() {
int n;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
int num = 1;
int idx = 0, result_idx = 0;
while (1) {
if (top == -1 || stack[top] < arr[idx]) {
stack[++top] = num++;
result[result_idx++] = '+';
}
else if (stack[top] == arr[idx]) {
top--;
result[result_idx++] = '-';
idx++;
}
else {
printf("NO\n");
return 0;
}
if (result_idx == n * 2) break;
}
for (int i = 0; i < result_idx; i++)
printf("%c\n", result[i]);
return 0;
}
[์ถ์ฒ] https://wtg-study.tistory.com/53