728x90
난이도 | Silver 2 |
링크 | https://www.acmicpc.net/problem/18870 |
풀이.
사실 문제 이해를 못하고 입출력 결과를 보고 어떤 식으로 풀면 되겠다 라고 느낀 문제
느낌이 딱 sort하고 순서대로 index 넣어주면 되겠다 싶었다.
소스코드.
public class B18870 {
public static void main(String[] args)throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
StringTokenizer stz=new StringTokenizer(br.readLine());
int[] arr=new int[N];
for(int i=0;i<N;i++) {
arr[i]=Integer.parseInt(stz.nextToken());
}
int[] mirror=arr.clone();
Arrays.parallelSort(mirror);
// -10 -9 2 2 4
HashMap<Integer, Integer> map=new HashMap<Integer, Integer>();
int index=0;
for(int i=0;i<N;i++) {
if(!map.containsKey(mirror[i])) {
map.put(mirror[i], index++);
}
}
StringBuilder sb=new StringBuilder();
for(int i=0;i<N;i++) {
sb.append(map.get(arr[i])).append(" ");
}
System.out.println(sb.toString());
}
}
참고로 StringBuilder 혹은 BufferedWriter를 사용하지 않으면 시간초과가 나오니 주의!
후기.
문제가 짧은 경우. 이해가 어려운 경우가 있다.
이럴 경우 당황하지 말고 input과 output의 관계를 생각해서 문제를 다시 한 번 읽어보자.
728x90
댓글