코테/프로그래머스

[프로그래머스/Lv. 2] 택배상자 (JAVA)

imname1am 2023. 11. 26. 19:47
반응형

🔺 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🔺 코드

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
import java.util.*;
 
class Solution {
    public int solution(int[] order) {
        int answer = 0 ;
 
        Stack<Integer> stack = new Stack<>();
        int idx = 0;        
        
        for(int i = 1 ; i <= order.length ; i++) {
            if(order[idx] != i) {    // 배열의 idx번째 원소가 될 때까지 스택에 값 넣음
                stack.push(i);
            }
            else {    // 배열의 idx번째 원소값과 같아지면, 일치하는 것이므로 정답 +1하고, 다음 원소 찾기 위해 idx도 +1
                idx++;
                answer++;
            }
            
            // 스택이 공집합이 아닐 때까지 & 맨 위 원소가 현재 위치 원소와 같다면, 정답 +1
            while(!stack.isEmpty() && stack.peek() == order[idx]) {
                stack.pop();
                idx++;
                answer++;
            }
        }
        
        return answer;
    }
}
cs

 

 

 

🧩  해결 아이디어

• 스택

- 1부터 order 배열의 길이만큼 반복문을 돌리며

└ 배열의 idx번째 원소값과 다르다면, 해당 숫자가 배열의 idx번째 원소가 될 때까지 스택에 값 넣음

└ 배열의 idx번째 원소값과 같아지면, 일치하는 것이므로 정답 +1하고, 다음 원소 찾기 위해 idx도 +1

└ 스택이 공집합이 아니고, 맨 위 원소가 현재 위치 원소와 같다면, 정답 +1

 

 

 


💬 느낀 점

스택 쓸 생각은 했는데

구현을 못 해서 못 풀었다네요......

복습을 합시다..

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

프로그래머스 택배상자 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

bacchus-lover.tistory.com

 

반응형