728x90
코딩테스트 연습 - 뒤에 있는 큰 수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 1)
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
for(int i=0; i<numbers.length;i++){
int count=0;
for(int j=i+1; j<numbers.length;j++){
if(numbers[i]<numbers[j]){
answer[i]=numbers[j];
count++;
break;
}
}
if(count==0){
answer[i]=-1;
}
}
return answer;
}
}
lv2인데도 너무 쉬운데?라고 생각했는데 역시나 시간초과로 틀렸다 ㅎ
이중 for문을 안쓰고 풀어봐야겠다
풀이 2)
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
for(int i=0; i<numbers.length;i++){
answer[i]=-1;
for(int j=i+1; j<numbers.length;j++){
if(numbers[i]<numbers[j]){
answer[i]=numbers[j];
break;
}
}
}
return answer;
}
}
여전히 이중 for문을 지우지 못한 코드
뭐가 달라진거냐 할 수도 있지만 필요없는 쓰레기 코드를 지웠습니다. 처음에 count를 왜 썼는지 참...다시보니 너무 부끄러운 코드다 ㅎ
풀이 3)
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
Arrays.fill(answer,-1); //answer -1로 채우기
Stack<Integer> s =new Stack<>();
s.push(0); //stack에 0 삽입
for(int i=1;i<numbers.length;i++){
while(!s.isEmpty()){
int index= s.pop();
if(numbers[i]>numbers[index]){//뒤에 수가 더 클때
answer[index]=numbers[i]; //answer에 넣어줌
}else{ // 적거나 같을때
s.push(index); //다음 인덱스로 넘어감
break;
}
}
s.push(i);
}
return answer;
}
}
결국 답을 보고 풀었다
728x90
'프로그래머스 & 백준' 카테고리의 다른 글
[프로그래머스/JAVA] - 완주하지 못한 선수 (해시) (0) | 2023.06.27 |
---|---|
[프로그래머스/JAVA] - 주식가격 (0) | 2023.06.22 |
[SQL] - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.06.13 |
[SQL] - 오랜 기간 보호한 동물(2) (0) | 2023.06.12 |
[프로그래머스/JAVA] - 기능개발 (0) | 2023.05.04 |
728x90
코딩테스트 연습 - 뒤에 있는 큰 수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 1)
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
for(int i=0; i<numbers.length;i++){
int count=0;
for(int j=i+1; j<numbers.length;j++){
if(numbers[i]<numbers[j]){
answer[i]=numbers[j];
count++;
break;
}
}
if(count==0){
answer[i]=-1;
}
}
return answer;
}
}
lv2인데도 너무 쉬운데?라고 생각했는데 역시나 시간초과로 틀렸다 ㅎ
이중 for문을 안쓰고 풀어봐야겠다
풀이 2)
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
for(int i=0; i<numbers.length;i++){
answer[i]=-1;
for(int j=i+1; j<numbers.length;j++){
if(numbers[i]<numbers[j]){
answer[i]=numbers[j];
break;
}
}
}
return answer;
}
}
여전히 이중 for문을 지우지 못한 코드
뭐가 달라진거냐 할 수도 있지만 필요없는 쓰레기 코드를 지웠습니다. 처음에 count를 왜 썼는지 참...다시보니 너무 부끄러운 코드다 ㅎ
풀이 3)
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
Arrays.fill(answer,-1); //answer -1로 채우기
Stack<Integer> s =new Stack<>();
s.push(0); //stack에 0 삽입
for(int i=1;i<numbers.length;i++){
while(!s.isEmpty()){
int index= s.pop();
if(numbers[i]>numbers[index]){//뒤에 수가 더 클때
answer[index]=numbers[i]; //answer에 넣어줌
}else{ // 적거나 같을때
s.push(index); //다음 인덱스로 넘어감
break;
}
}
s.push(i);
}
return answer;
}
}
결국 답을 보고 풀었다
728x90
'프로그래머스 & 백준' 카테고리의 다른 글
[프로그래머스/JAVA] - 완주하지 못한 선수 (해시) (0) | 2023.06.27 |
---|---|
[프로그래머스/JAVA] - 주식가격 (0) | 2023.06.22 |
[SQL] - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.06.13 |
[SQL] - 오랜 기간 보호한 동물(2) (0) | 2023.06.12 |
[프로그래머스/JAVA] - 기능개발 (0) | 2023.05.04 |