결과는 계속 맞는데 시간초과때문에 미치게 만든 문제였다.
무수한 시간초과의 수집 우하하
일단 문제를 푸는 기본 구조는,
- arr에 x좌표를 입력받는다.
- arr을 똑같이 복사한 sort를 만들고 sort를 정렬한다.
- arr에서 x좌표 순서대로 sort에서의 해당 좌표의 인덱스를 출력한다.
StringBuilder를 처음에 리스트정렬, 선택정렬과 사용했다가 시간초과가 뜨길래 아, 이게 문제가 아닌가 했지만 HashMap 사용했을 때는 얘가 문제가 됐다. 자바 너 자꾸 그럴래?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> point=new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i=0; i<N; i++){
point.add(Integer.parseInt(st.nextToken()));
}
ArrayList<Integer> list=new ArrayList<>(point);
ArrayList<Integer> result=new ArrayList<>();
Collections.sort(list);
for(Integer i: list) {
if(!(result.contains(i)))
result.add(i);
}
for(int i=0; i<N; i++)
sb.append(result.indexOf(point.get(i))+" ");
System.out.print(sb);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb= new StringBuilder();
int N = Integer.parseInt(br.readLine());
int point[]=new int[N];
ArrayList<Integer> list=new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i=0; i<N; i++){
point[i]=Integer.parseInt(st.nextToken());
if(!list.contains(point[i]))
list.add(point[i]);
}
Collections.sort(list);
for(int i=0; i<N; i++) {
for(int j=0; j<list.size(); j++) {
if(point[i]==list.get(j))
sb.append(j+" ");
}
}
System.out.print(sb);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int arr[]=new int[N];
int sort[]=new int[N];
HashMap<Integer,Integer> map = new HashMap<>();
StringTokenizer st= new StringTokenizer(br.readLine()," ");
for(int i=0; i<N; i++)
arr[i]=Integer.parseInt(st.nextToken());
sort = arr.clone();
Arrays.sort(sort);
int index=0;
for(int i=0; i<N; i++) {
if(!map.containsKey(sort[i]))
map.put(sort[i], index++);
}
for(int i=0; i<N; i++)
sb.append(map.get(arr[i])+" ");
System.out.print(sb);
br.close();
}
}
아 힘들어