본문 바로가기
프로그래밍/알고리즘 풀이

[알고리즘] 백준 1920번 수 찾기 Java

by 방구석개발자 2020. 8. 25.
반응형



시간초과 된 소스입니다.

import java.util.*;

public class Main {

	public static void main(String[] args) {
			Scanner scan=new Scanner(System.in);
			
			int n=Integer.parseInt(scan.nextLine());
			String strArray[]=scan.nextLine().split(" ");
			int m=Integer.parseInt(scan.nextLine());
			String searchArray[]=scan.nextLine().split(" ");
			int [] result=new int [m];

			for(int i=0;i<searchArray.length;i++){
				result[i]=0;
				for(int j=0;j<strArray.length;j++){
					if(Integer.parseInt(strArray[j])==Integer.parseInt(searchArray[i])){
						result[i]=1;
						break;
					}
					
				}
			}
			
			for (int i : result) {
				System.out.println(i);
			}
	}

}

문제를 잘 맞춘 소스 입니다.

import java.util.*;

public class Main {

	public static void main(String[] args) {
			Scanner scan=new Scanner(System.in);
			
			int n=Integer.parseInt(scan.nextLine());
			//자바 더블 콜론 문법에 대해 공부할것
			int [] intArray=Arrays.stream(scan.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
			int m=Integer.parseInt(scan.nextLine());
			int [] searchArray=Arrays.stream(scan.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
			
			//오름 차순 정렬 
			Arrays.sort(intArray);
			
			//이진검색 하기
			for(int i:searchArray) {
				if(Arrays.binarySearch(intArray,i)>=0){
					System.out.println(1);
				}else{
					System.out.println(0);
				}	
			}
	}
}

이진검색을 이용하여 문제를 풀려고 하였으며 잘하시는분들 소스를 보니 HashSet을 이용하여 풀어서 저도 차후에 보강해보겠습니다.

반응형

댓글