๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1874
Code
๋ฉ๋ชจ๋ฆฌ : 143944 KB
์๊ฐ : 32 ms
N = int(input())
arr=[]
result=[]
temp=[]
for _ in range(N):
arr.append(int(input()))
j = 0
for i in range(1, N+1):
temp.append(i)
result.append('+')
while (temp and temp[-1] == arr[j]):
temp.pop()
j += 1
result.append('-')
if not temp: # ๋น์ด ์์ผ๋ฉด
for i in result:
print(i)
else:
print("NO")
Python
๋ณต์ฌ
์๊ฐ์ด๊ณผ
#include <iostream>
#include <vector>
int N;
std::vector<int> arr;
std::vector<char> result;
std::vector<int> temp;
void input_faster()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
std::cin >> N;
for(int i = 0 ; i < N ; i++){
int a;
std::cin >> a;
arr.push_back(a);
}
}
void solve()
{
int j = 0;
for (int i = 1 ; i < N + 1 ; i++){
temp.push_back(i);
result.push_back('+');
while (!temp.empty() && temp.back() == arr[j]){
temp.pop_back();
j++;
result.push_back('-');
}
}
}
void print_val()
{
if (temp.empty()){
for (int i = 0 ;i < result.size();i++)
std::cout << result[i] << std::endl;
}
else
std::cout << "NO";
}
int main()
{
input_faster();
input();
solve();
print_val();
return (0);
}
C++
๋ณต์ฌ
๋ฉ๋ชจ
โข
๋ฌธ์ ์ดํด๋ ํ์ฐธ ๊ฑธ๋ฆผ
โ N์ด push๋๋ฉด 1, 2, 3, 4, 5, 6, ,,,,, N ์ด ์์๋๋ก ๋ค์ด์ฌ ๋ ์ฃผ์ด์ง ์์ด (ex. 43687521) ์ด ์์๋๋ก pop ๋๋๋ก ๋ง๋๋ ๊ฒ!
โข
๋ฌธ์ ์ ๊ทผ ์์
์กฐ๊ฑด : j = 0
1.
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ 1 ~ N ๊น์ง temp ๋ฐฐ์ด์ push ๋ฅผ ํ๋ค๊ฐ
2.
temp์ ๊ฐ์ฅ ๋ง์ง๋ง ์ซ์์ arr[j] ์ ์์ ๊ฐ์ผ๋ฉด pop โ j++ ์ ํ๋ฉด์ ๊ฐ์ง ์์๋๊น์ง ๋ฐ๋ณต
3.
result ๋ฐฐ์ด โ push ํ ๋ '+', popํ ๋ '-' ๋ฃ๊ธฐ
4.
์ต์ข
์ ์ผ๋ก ๋ฐ๋ณต๋ฌธ์ด ๋๋ฌ์ ๋ temp ๋ฐฐ์ด์ด
โ ๋น์ด์์ง ์์ผ๋ฉด ์์ด์ ๋ง์กฑ์ํค์ง ๋ชปํ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก NO ์ถ๋ ฅ
โ ๋น์ด์์ผ๋ฉด result ๋ฐฐ์ด์ ์์๋ฅผ ์ค๋ฐ๊ฟ์ ์ฌ์ด์ ๋๊ณ ์ถ๋ ฅ