풀이
- 해당 문제는 무슨 말인가 하다가 입력값과 출력값을 확인해보니
- 큰 순서에 따라 번호를 메기는 문제로 파악하여 아래와 같이 해결할 수 있었다.
- 우선 result는 입력 받는 배열의 크기만큼 생성 후 초기값을 따로 설정하고
- 이후 2중 for문으로 계속 처음부터 조회할 수 있도록 했으며
- result[j] 가 초기값 -1이 아닐 경우엔 넘어가고
- low 값보다 result[j]가 작다면 변경 후 idx 또한 함께 바꾼다음
- 반복문이 마치면 그때 result 값을 변경해줘서 문제를 해결.
추가 학습
- 자바에서 ArrayList로 원하는 크기로 초기값을 넣어주고 싶다면
- new ArrayList<>( Collections.nCopies(num, value) ) <- 이렇게 작성하면 된다.
import java.io.*;
import java.util.*;
public class 수열정렬 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
ArrayList<Integer> li = new ArrayList<>(n);
for (int i = 0; i < n; i++) li.add(Integer.parseInt(st.nextToken()));
ArrayList<Integer> result = new ArrayList<>(Collections.nCopies(n,-1));
for (int i = 0; i < n; i++) {
int low = 1001;
int idx = 0;
for (int j = 0; j < n; j++) {
if (result.get(j) != -1) continue;
else if (low > li.get(j)) {
low = li.get(j);
idx = j;
}
}
result.set(idx,i);
}
for (int i = 0; i < n; i++) {
System.out.print(result.get(i));
if (i != n-1) System.out.print(" ");
}
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1225번] 이상한 곱셈 (0) | 2023.12.29 |
---|---|
[백준, 파이썬, 1225번] 이상한 곱셈 (0) | 2023.12.29 |
[백준, 파이썬, 1015번] 수열 정렬 (0) | 2023.12.28 |
[백준, 자바, 1264번] 모음의 개수 (0) | 2023.12.28 |
[백준, 파이썬, 1264번] 모음의 개수 (0) | 2023.12.28 |