ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€(BOJ) 2493번] 탑 (C++)
    PS(Problem Solving)/C++ 2022. 1. 16. 23:23
    λ°˜μ‘ν˜•

    문제 링크

    https://www.acmicpc.net/problem/2493

     

    문제 정보

    μž…λ ₯

    첫째 쀄에 νƒ‘μ˜ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N이 주어진닀. N은 1 이상 500,000 μ΄ν•˜μ΄λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” N개의 νƒ‘λ“€μ˜ 높이가 직선상에 놓인 μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ˜ λΉˆμΉΈμ„ 사이에 두고 주어진닀. νƒ‘λ“€μ˜ λ†’μ΄λŠ” 1 이상 100,000,000 μ΄ν•˜μ˜ μ •μˆ˜μ΄λ‹€.

    좜λ ₯

    첫째 쀄에 주어진 νƒ‘λ“€μ˜ μˆœμ„œλŒ€λ‘œ 각각의 νƒ‘λ“€μ—μ„œ λ°œμ‚¬ν•œ λ ˆμ΄μ € μ‹ ν˜Έλ₯Ό μˆ˜μ‹ ν•œ νƒ‘λ“€μ˜ 번호λ₯Ό ν•˜λ‚˜μ˜ λΉˆμΉΈμ„ 사이에 두고 좜λ ₯ν•œλ‹€. λ§Œμ•½ λ ˆμ΄μ € μ‹ ν˜Έλ₯Ό μˆ˜μ‹ ν•˜λŠ” 탑이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 0을 좜λ ₯ν•œλ‹€.

     

    풀이

     μ΄ λ¬Έμ œλ„ μ–΄λ €μš΄ λ¬Έμ œμ—¬μ„œ ν•΄κ²°ν•˜λŠ”λ° νž˜λ“€μ—ˆλ‹€. ν˜„μž¬ μž…λ ₯ν•˜λŠ” νƒ‘μ˜ 높이가 κΈ°μ‘΄ μŠ€νƒμ˜ νƒ‘μ˜ 높이보닀 ν¬κ±°λ‚˜ μž‘μ„λ•Œλ₯Ό 잘 생각해주면 λœλ‹€. λ§Œμ•½ μŠ€νƒμ˜ top이 ν˜„μž¬ μž…λ ₯ν•˜λŠ” νƒ‘μ˜ 높이보닀 크닀면 ν˜„μž¬ μž…λ ₯ν•˜λŠ” νƒ‘μ˜ μ‹ ν˜Έλ₯Ό 받을 수 μžˆλ‹€. 그리고 μŠ€νƒμ˜ top이 ν˜„μž¬ μž…λ ₯ν•˜λŠ” νƒ‘μ˜ 높이보닀 μž‘λ‹€λ©΄ ν•„μš”κ°€ μ—†λŠ” νƒ‘μ΄λ―€λ‘œ pop을 ν•œλ‹€.

    6 μž…λ ₯ => μŠ€νƒ : (1, 6)

    9 μž…λ ₯ => pop => μŠ€νƒ : (2, 9)

    5 μž…λ ₯ => μŠ€νƒ : (2, 9), (3, 5)

    7 μž…λ ₯ => pop => μŠ€νƒ : (2, 9), (4, 7)

    4 μž…λ ₯ => μŠ€νƒ : (2, 9), (4, 7), (5, 4)

     

    μ†ŒμŠ€ μ½”λ“œ

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(void) {
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	
    	int n;
    	cin >> n;
    	
    	stack<pair<int, int>> S;
    	
    	for (int i = 1; i <= n; i++) {
    		int tower;
    		cin >> tower;
    		
    		while (!S.empty()) {
    			// top이 ν˜„μž¬ μž…λ ₯ν•˜λŠ” 값보닀 크닀면 μ‹ ν˜Έλ₯Ό 받을 수 있음!
    			if (S.top().second > tower) {
    				cout << S.top().first << ' ';
    				break;
    			}
    			// top이 ν˜„μž¬ μž…λ ₯ν•˜λŠ” 값보닀 μž‘μœΌλ©΄ pop ν•œλ‹€.
    			S.pop();
    		}
    		
    		if (S.empty()) {
    			cout << '0' << ' ';
    		}
    		
    		S.push(make_pair(i, tower));
    	}
    	
    	return 0;
    }

     

    λ°˜μ‘ν˜•
Designed by Tistory.