백준 20551번, Sort 마스터 배지훈의 후계자[JAVA]
백준 20551번, Sort 마스터 배지훈의 후계자 [2020 인하대학교 프로그래밍 경진대회(IUPC) Open Contest]
카테고리 : 정렬
문제를 쉽게 정리해보자.
B배열에서 찾고자 하는 원소가 있다면, 그 위치를 출력하고
없으면 -1을 출력한다.
단, 찾고자 하는 원소가 여러개 존재한다면 가장 앞에 위치한
원소의 위치를 출력한다.
풀이 과정은 다음과 같다.
1) B배열을 입력받는다.
2) B배열을 순차적으로 돌며
해시맵에 {원소 값 : 원소 위치}의 {key : value} 쌍으로
질문(B배열의 원소)을 삽입한다.
이때,이미 Key값에 해당하는
value 값이 저장되어있다면 무시한다.
3) D배열을 돌면서 D배열의 원소 값이 B배열에 존재하는지 찾고, 위치를 출력한다.
B배열의 0번째 index부터 탐색하며 해시맵을 만들어줬기때문에
자동으로 가장 앞에 위치한 원소의 위치가 출력된다.
소스 코드
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
Map<Integer,Integer> m= new HashMap<>();
int N=sc.nextInt();
int M=sc.nextInt();
int arr[]=new int [N];
for(int i=0;i<N;i++){
arr[i]=sc.nextInt();
}
Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
if(m.get(arr[i])==null){
m.put(arr[i],i);
}
}
for(int i=0;i<M;i++){
int goal=sc.nextInt();
if(m.get(goal)==null) System.out.println(-1);
else System.out.println(m.get(goal));
}
}
}
Leave a comment