๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test/Algorithms

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ๋ฐฐ์ƒ์ž/Java - Lv.2

by The Future Engineer, Lucy 2024. 10. 24.
728x90
๋ฐ˜์‘ํ˜•

โ“๋ฌธ์ œ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์„ฑ๋Šฅ ์š”์•ฝ

๋ฐ˜๋ณต๋ฌธ โžก๏ธ ๋ฉ”๋ชจ๋ฆฌ: 132 MB, ์‹œ๊ฐ„: 189.21 ms

ํ โžก๏ธ ๋ฉ”๋ชจ๋ฆฌ: 190 MB, ์‹œ๊ฐ„: 191.63 ms

๋ฌธ์ œ ์„ค๋ช…

ํƒ๋ฐฐ์ƒ์ž๋Š” ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉฐ 1๋ฒˆ ์ƒ์ž๋ถ€ํ„ฐ n๋ฒˆ ์ƒ์ž๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ์— ์ผ๋ ฌ๋กœ ๋†“์—ฌ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ๋Š” ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ง„ํ–‰์ด ๊ฐ€๋Šฅํ•ด์„œ ๋ฒจํŠธ์— ๋†“์ธ ์ˆœ์„œ๋Œ€๋กœ(1๋ฒˆ ์ƒ์ž๋ถ€ํ„ฐ) ์ƒ์ž๋ฅผ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ๋ฐฐ ๊ธฐ์‚ฌ๋‹˜์ด ๋ฏธ๋ฆฌ ์•Œ๋ ค์ค€ ์ˆœ์„œ์— ๋งž๊ฒŒ ํƒ๋ฐฐ์ƒ์ž๋ฅผ ์‹ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ์˜ ๋งจ ์•ž์— ๋†“์ธ ์ƒ์ž๊ฐ€ ํ˜„์žฌ ํŠธ๋Ÿญ์— ์‹ค์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ ์ƒ์ž๋ฅผ ํŠธ๋Ÿญ์— ์‹ค์„ ์ˆœ์„œ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ์ž ์‹œ ๋ณด์กฐ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ์— ๋ณด๊ด€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณด์กฐ ์ปจํ…Œ์ด๋„ˆ ๋งจ ์•ž์˜ ์ƒ์ž๋งŒ ๋บ„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋ณด์กฐ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ์— ๋ณด๊ด€ํ•œ ์ƒ์ž๋ถ€ํ„ฐ ๊บผ๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค).

๋ณด์กฐ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ๋ฅผ ์ด์šฉํ•ด๋„ ๊ธฐ์‚ฌ๋‹˜์ด ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ƒ์ž๋ฅผ ์‹ฃ์ง€ ๋ชป ํ•œ๋‹ค๋ฉด, ๋” ์ด์ƒ ์ƒ์ž๋ฅผ ์‹ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ order์˜ ๊ธธ์ด ≤ 1,000,000
  • order๋Š” 1์ด์ƒ order์˜ ๊ธธ์ด ์ดํ•˜์˜ ๋ชจ๋“  ์ •์ˆ˜๊ฐ€ ํ•œ๋ฒˆ์”ฉ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • order[i]๋Š” ๊ธฐ์กด์˜ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ์— order[i]๋ฒˆ์งธ ์ƒ์ž๋ฅผ i+1๋ฒˆ์งธ๋กœ ํŠธ๋Ÿญ์— ์‹ค์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

order result
[4, 3, 1, 2, 5] 2
[5, 4, 3, 2, 1] 5

โœ๐Ÿปํ’€์ด

ํƒ๋ฐฐ ๊ธฐ์‚ฌ๋‹˜์ด ์›ํ•˜๋Š” ์ˆœ์„œ๋กœ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ์ฐจ์— ์‹ฃ์„ ๋•Œ,
๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ(๋ฐ˜๋ณต๋ฌธ or ํ)์™€ ์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ณด์กฐ ์ปจํ…Œ์ด๋„ˆ ๋ฒจํŠธ(์Šคํƒ)์— ๋„ฃ๋Š”๋‹ค.
์ดํ›„ ๋ณด์กฐ ์ปจํ…Œ์ดํ„ฐ ๋ฒจํŠธ์˜ ๋งจ ์•ž์˜ ์ƒ์ž๊ฐ€ ์›ํ•˜๋Š” ์ˆœ์„œ๋ผ๋ฉด ์ด๋ฅผ ๊บผ๋‚ธ๋‹ค.
์›ํ•˜๋Š” ์ˆœ์„œ์™€ ๋งž์„ ๋•Œ๋งˆ๋‹ค answer + 1์„ ํ•œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

/** ์Šคํƒ๊ณผ ํ ์ด์šฉํ•œ ํ’€์ด **/
import java.util.*;

class Solution {
    public int solution(int[] order) {
        int answer = 0;
        Stack<Integer> s = new Stack<>();
        Queue<Integer> q = new LinkedList<>();

        for(int i = 1; i <= order.length; i++){
            q.add(i);
        }

        int i = 0;
        while(!q.isEmpty()){
            int o = q.poll();
            if(o != order[i]){
                s.push(o);
            }
            else {
                i++;
                answer++;
                while(!s.isEmpty() && s.peek() == order[i]){
                    s.pop();
                    answer++;
                    i++;
                }
            }
        }

        return answer;
    }
}

 

/** ๋ฐ˜๋ณต๋ฌธ๊ณผ ์Šคํƒ์„ ์ด์šฉํ•œ ํ’€์ด **/
import java.util.*;

class Solution {
    public int solution(int[] order) {
        int answer = 0;
        Stack<Integer> s = new Stack<>();
        int idx = 0;
        for(int i = 1; i <= order.length; i++){
            s.add(i);
            while(!s.isEmpty() && s.peek() == order[idx]){
                s.pop();
                answer++;
                idx++;
            }
        }

        return answer;
    }
}
728x90
๋ฐ˜์‘ํ˜•