[백준 JAVA] 17299번 풀이 - 오등큰수 (오큰수 유형)
by mini_minpackage quiz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
/**
* 오등큰수
*
**/
public class _17299 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int [] arr = new int[n];
int [] cnt = new int[1000001];
int [] result = new int[n];
Stack<Integer> stack = new Stack<>();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<n; i++){
arr[i] = Integer.parseInt(st.nextToken());
cnt[arr[i]]++;
}
for(int i=0; i<n; i++){
while(!stack.isEmpty() && cnt[arr[stack.peek()]] < cnt[arr[i]] ){
result[stack.pop()] = arr[i];
}
stack.add(i);
}
while (!stack.empty()){
result[stack.pop()] = -1;
}
StringBuilder sb = new StringBuilder();
for(int j : result){
sb.append(j).append(" ");
}
System.out.println(sb);
}
}
💬 참고 : 오큰수 (백준 17298번)
https://backshren20.tistory.com/664
[백준 JAVA] 17298번 풀이 - 오큰수 (인덱스 🥺..)
생각의 방향 스택을 이용하는 것은 알았으나, 스택에 무엇을 넣어야할지 갈피를 잡지 못하고 있었음.... "수열의 원소"를 넣을 생각만 하고, "인덱스"를 사용할 줄은 꿈에도 몰랐지.... 인덱스 참
backshren20.tistory.com
풀이
오큰수 보다 쉬운데.... 시간초과 때문에 버거웠다.
cnt 배열을 어떻게 설정해야할지 헤매고 있었음
-> 예전에 배열의 카운트를 구하는 문제를 풀 때도 n의 최대값 만큼 배열을 설정했는데, 이번 문제도 그렇게 풀었어야했다.
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 문자열 자료구조 문제 (11655, 10820, 10808번) (0) | 2023.11.10 |
---|---|
[백준 JAVA] 1918번 풀이 - 후위 표기식 (0) | 2023.11.09 |
[백준 JAVA] 17298번 풀이 - 오큰수 (인덱스 🥺..) (0) | 2023.11.06 |
[백준 JAVA] 10799번 풀이 - 쇠막대기 (자료구조 점점 능숙해😇) (1) | 2023.10.28 |
[백준 JAVA] 17413번 풀이 - 단어 뒤집기2 (크게 보고 큰 틀을 잡자) (0) | 2023.10.27 |
블로그의 정보
개발자 미니민의 개발로그
mini_min