코테/프로그래머스

[프로그래머스/Lv. 2] 뒤에 있는 큰 수 찾기 (JAVA)

imname1am 2023. 9. 24. 01:38
반응형

🔺 문제

 

프로그래머스

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

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
import java.util.*;
 
class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        Stack<Integer> s = new Stack<>();
      
        for(int i = numbers.length - 1; i >= 0; i--){
            while(!s.isEmpty()){
                if(s.peek() > numbers[i]){ // 뒤가 더 클 때
                    answer[i] = s.peek();
                    break;
                }
                else{
                    s.pop();
                }
            }
 
            if(s.isEmpty()){
                answer[i] = -1;
            }
            s.push(numbers[i]);
        }
        
        return answer;
    }
}
cs

 

🧩 해결 아이디어

• 스택

- 스택에 들어가는 건 값이 아닌 인덱스


🔺 다른 풀이들

- 내가 참고한 풀이는 뒤쪽 원소부터 비교하면서 스택에 넣는 건데, 이 풀이는 앞부터 진행했다.

 

[프로그래머스] - 뒤에 있는 큰 수 찾기 (JAVA)

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

sasca37.tistory.com

 


💬 느낀 점

처음에 브루트포스 2중 for문 써서 풀어봤는데 마지막 20번 TC부터 틀렸당...

아무래도 데이터 크기가 크다 보니..

틀린 코드
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
import java.util.*;
 
class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        List<Integer> list = new ArrayList<>();
 
        for(int i = 0 ; i < numbers.length ; i++) {
            boolean exists = false;
            
            for(int j = i + 1 ; j < numbers.length ; j++) {
                if(numbers[j] > numbers[i]) {
                    list.add(numbers[j]);
                    exists = true;
                    break;
                }
            }
            
            if(!exists) list.add(-1);
        }
        
        for(int i = 0 ; i < list.size() ; i++) {
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}
cs

 

 

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

(참고)

 

프로그래머스 Lv.2 뒤에 있는 큰 수 찾기-JAVA

문제 정수로 이루어진 배열 numbers가 있습니다. 배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷큰수라고 합니다. 정수 배열 numbers가 매개변

jaewoo2233.tistory.com

 

 

[프로그래머스] 뒤에 있는 큰 수 찾기

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

timetolazy.tistory.com

 

반응형