코테/프로그래머스
[프로그래머스/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
반응형