Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준
- 티스토리챌린지
- RVO
- directx
- baekjoon
- RootMotion
- 팰린드롬 만들기
- 프로그래머스
- Unreal Engine5
- GeeksForGeeks
- Frustum
- C
- UnrealEngine4
- 1563
- UnrealEngine5
- 줄 세우기
- 2294
- NRVO
- 오블완
- Programmers
- DeferredRendering
- UE5
- winapi
- const
- C++
- IFileDialog
- softeer
- DirectX11
- algorithm
- 언리얼엔진5
Archives
- Today
- Total
Game Develop
[Algorithm] Baekjoon 2493번 : 탑 본문
https://www.acmicpc.net/problem/2493
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
int answer[500001] = { 0 };
struct Node
{
int num;
int index;
};
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
stack<Node> s1;
stack<Node> s2;
int input;
cin >> n;
if (n == 1)
{
cout << 0;
return 0;
}
for (int i = 1; i <= n; ++i)
{
cin >> input;
s1.push({ input,i });
}
while (s1.size() != 1)
{
s2.push(s1.top());
s1.pop();
while (!s2.empty() && s1.top().num > s2.top().num)
{
answer[s2.top().index] = s1.top().index;
s2.pop();
}
}
for (int i = 1; i <= n; ++i)
{
printf("%d ", answer[i]);
}
}
|
cs |
골드5 스택문젠데.. 공책에 대충 끄적이니 금방 해결하긴 했다. 풀고나니 그냥 스택 한개로 더 간단하게 짤 수 있을 것 같긴하다.
쨌든 위의 풀이는 스택 두개 이용해서 한 풀이인데, 입력값들을 전부 인덱스랑 같이 구조화해서 (pair를 쓰든 구조체로 만들든.. 난 무조건 구조체로 만드는걸 선호한다) 스택(s1)에 넣어준다.
이후 반복문을 수행할 건데, 일단 두번째 스택(이하 s2)에다 s1의 top을 꺼내서 넣고, s2의 top과 s1의 top을 비교해준다.
s2의 top이 더 작다면, 즉 s1이 보낸 신호를 s2가 받을 수 있다면 정답에 기록을 해주고 s2를 pop한다(수신됐으니까).
그리고 한번만 하는게 아니라, s2에는 아직 신호를 송신하지못한것들이 남아있기 때문에 수신할 수 있는 안테나들은 계속 수신해준다.
해당 로직은 수행하기 전에 s1의 크기가 반드시 2이상이여야 하니 1이 되면 바로 로직을 끝내준다.
s1에 하나밖에 안들어있다면, 비교군이 더이상 없다는 것이기 때문에.. s2와의 비교는 이전 반복문때 끝냈으니 신경 쓸 필요없다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm] Baekjoon 17298번 : 오큰수 (0) | 2023.09.09 |
---|---|
[Algorithm] Baekjoon 6198번 : 옥상 정원 꾸미기 (0) | 2023.09.09 |
[Algorithm] Baekjoon 1874번 : 스택 수열 (0) | 2023.09.08 |
[Algorithm] Baekjoon 20058번 : 마법사 상어와 파이어스톰 (0) | 2023.09.07 |
[Algorithm] Baekjoon 20057번 : 마법사 상어와 토네이도 (0) | 2023.09.06 |