[코딩테스트] 뒤에 있는 큰 수 찾기 - 레벨 2

단비·2023년 3월 26일
0

코딩테스트

목록 보기
3/3

1. 뒤에 있는 큰 수 찾기 - Lv.2

  • 문제 설명
    정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
    정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

  • 제한사항

    1. 4 ≤ numbers의 길이 ≤ 1,000,000
    2. 1 ≤ numbers[i] ≤ 1,000,000
  • 코드 풀이

      public class Main {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              List<Integer> list = new ArrayList<>();
              while(true){
                  System.out.println("숫자를 입력하세요(1 ≤ 숫자 ≤ 1,000,000), 종료는 0번");
                  int i = sc.nextInt();
                  if(i == 0) {
                      if(list.size() >= 4 && list.size() <= 1000000){
                          System.out.println("종료합니다.");
                          break;
                      } else{
                          System.out.println("종료 가능 조건: 4 ≤ 숫자 갯수 ≤ 1,000,000");
                      }
                  }
                  if(1 <= i && i <= 1000000){
                      list.add(i);
                  }else {
                      System.out.println("조건에 부합하지 않습니다.");
                  }
              }
              int[] numbers = new int[list.size()];
              for(int i=0; i < list.size(); i++){
                  numbers[i] = list.get(i);
              }
              solution(numbers);
          }
          public static int[] solution(int[] numbers) {
              int[] answer = new int[numbers.length];
              for(int i = 0; i < answer.length; i++){
                  if(i == answer.length - 1) {
                  	  answer[i] = -1; // 마지막 원소는 -1로 삽입
                      break;
                  }
                  for(int a = i + 1; a < answer.length; a++){
                      if(numbers[i] < numbers[a]){ // 큰 숫자가 있을 경우
                          answer[i] = numbers[a]; // i자리에 해당 숫자 삽입
                          break;
                      }
                      if (a == answer.length - 1) answer[i] = -1;
                  }
               }
          	   return answer;
          }
      }
  • 결과

    • 20, 21, 22, 23 시간 초과로 통과 못함 😩
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글