[백준][Java] 1015. 수열 정렬

2025. 1. 9. 15:44·Algorithms(CT)/Baekjoon

https://www.acmicpc.net/problem/1015

 

 

문제

P[i] : 0 ~ N-1 까지 수를 한 번 씩 포함하고 있는 수열입니다.
B[P[i]] = A[i] 가 되도록 할 때,
배열 A가 주어지고, 수열 B가 비내림차순이 되는 수열이 되도록 만드는 P 수열을 출력해주세요.
만약, 그러한 P 수열이 여러 개라면 사전 순으로 앞서는 것을 출력합니다.

 

비내림차순 : 앞의 원소보다 크거나 같은 경우.

 

 


 

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        int[] A = new int[N];
        int[] B = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(st.nextToken());
            B[i] = A[i];
        }

        Arrays.sort(B);

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                if(A[i] == B[j]) {
                    sb.append(j + " ");
                    B[j] = -1;
                    break;
                }
            }
        }

        System.out.println(sb);
    }
}

 

 

풀이 설명

처음 풀이를 했을 때(오답), 모든 경우의 수를 다 따져야 한다고 생각해 BFS로 풀이를 했더니 메모리 초과로 실패하였습니다.

이 문제는 정렬이 들어가 있기 때문에 모든 경우의 수를 따지는 것이 아니라, 경우에 적합한 수를 찾아나가는 것이 맞는 풀이였던 것 같습니다.

 

이후, B배열에 들어가는 수는 A 배열의 값과 같기 때문에 초기에 A배열에 있는 수들로 초기화를 해줍니다.

그리고 B 배열이 비내림차순이 되기 위해 Arrays.sort(B)를 이용해 정렬해줍니다.

이 때, A 배열과 B 배열의 각 값이 같을 때, 그때의 B의 인덱스 값이 P가 될 것입니다. 

 

문제를 잘 이해하고 푼다면, 잘 작성되지만 섣불리 풀었다가 당하는 문제였던 듯 하네요 ;;; 

 

'Algorithms(CT) > Baekjoon' 카테고리의 다른 글

[백준][Java] 29729. 가변 배열  (0) 2025.01.09
[백준] 14719. 빗물 (자바)  (1) 2023.09.27
[백준] 1541. 잃어버린 괄호 (Java)  (0) 2023.08.03
[백준] 2457. 공주님의 정원 (Java)  (0) 2023.08.01
[백준] 2606. 바이러스 (java)  (0) 2023.07.18
'Algorithms(CT)/Baekjoon' 카테고리의 다른 글
  • [백준][Java] 29729. 가변 배열
  • [백준] 14719. 빗물 (자바)
  • [백준] 1541. 잃어버린 괄호 (Java)
  • [백준] 2457. 공주님의 정원 (Java)
gwee_99
gwee_99
bE bETTER!
  • gwee_99
    얼렁이와 뚱땅이
    gwee_99
  • 전체
    오늘
    어제
    • ====Category====
      • Algorithms(CT)
        • Programmers
        • Baekjoon
        • Goorm
      • Web
        • Error 해결
      • BackEnd
        • Spring
        • JPA
      • FrontEnd
        • HTML.CSS
        • JavaScript
      • Language
        • Java
      • Cloud
      • CSTS
      • Books
        • IT 5분 잡학사전
      • 일상
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    lv2
    java
    BFS
    제대로 파는 자바스크립트
    DFS
    존안님
    프로그래머스
    구름톤 챌린지
    DP
    스택
    BOJ
    백준
    노마드코더
    LV.3
    IT 5분 잡학사전
    자바
    Greedy
    IT 잡학사전
    lv.4
    개발자북클럽
    Lv.1
    HTML
    구름
    호텔 대실
    그리디
    따라하며 배우는 html css
    인프런
    LV.2
    코딩테스트
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwee_99
[백준][Java] 1015. 수열 정렬
상단으로

티스토리툴바