문제 링크 : https://www.acmicpc.net/problem/1015
그림을 그리면서 문제를 이해하면 조금 더 쉽게 이해가 가는것같다.
정렬한 배열을 매핑하려고 처음에 똑같은 배열을 두개를 만드는데 공간적으로 조금 낭비일수도 있겠다는 생각이 든다
저 부분을 조금 더 효율적이게 할수 있을것같다. 나중에 시도해봐야지
다른사람들이 푼것도 봤는데 정말 다들 잘한다. 갈길이 멀다.
import java.io.*;
import java.util.*;
public class Main {
static FastReader scan = new FastReader(); // 입력
static StringBuilder sb = new StringBuilder(); //제출답안
static int N;
static int[] listA, listB, seqP;
static void input() { //입력함수
N = scan.nextInt();
listA = new int[N];
listB = new int[N];
for(int i =0; i < N; i++) {
listA[i] = scan.nextInt();
listB[i] = listA[i];
}
}
public static void main(String[] args) {
input(); // 입력
Arrays.sort(listB);
seqP = new int[N];
//정답수열 생성
makeSeq();
System.out.println(sb.toString());
}
public static void makeSeq() {
for(int i =0; i < N; i++) {
for(int j =0; j < N; j++) {
if(listA[i] == listB[j]) {
seqP[i] = j;
listB[j] = -1;
break;
}
}
}
for(int i =0; i < N; i++) {
sb.append(seqP[i]);
sb.append(" ");
}
}
//류호석 강사님 템플릿
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader() {
br = new BufferedReader(new InputStreamReader(System.in));
}
public FastReader(String s) throws FileNotFoundException {
br = new BufferedReader(new FileReader(new File(s)));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
}
'알고리즘' 카테고리의 다른 글
python 백준2839 설탕배달(BOJ2839) (0) | 2022.07.25 |
---|---|
JAVA 백준2470 두 용액(BOJ2470) (0) | 2022.03.13 |
JAVA 백준2751 수 정렬하기2(BOJ2751)(cpu 초당 연산속도) (0) | 2022.03.12 |
JAVA 백준2750 수 정렬하기(BOJ2750) (0) | 2022.03.12 |
JAVA 백준10825 국영수(BOJ10825) (0) | 2022.03.12 |