Algorithm_Simple Search

seop93·2022년 11월 9일

알고리즘

목록 보기
2/4
post-thumbnail

https://codeup.kr/problem.php?id=3001

단순 탐색(Simple Search)

단순 탐색이란?

말 그대로 단순한 탐색이다. 내가 1 ~ 100 의 자연수 중에서 50 이란 숫자를 찾게 된다고 가정하자.

그 때 우리는 단순 탐색을 하면 1,2,3,4,5,6,7,8,9... 49 , 50! 이렇게 찾게 되는 것을 단순 탐색이라 한다.

public class SimpleSearch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] numbers = new int[n];
        sc.nextLine();
        for (int i = 0; i < numbers.length ; i++) {
            numbers[i] = sc.nextInt();
        }
        sc.nextLine();
        int idx = 0;
        int k = sc.nextInt();

        for (int i = 0; i < numbers.length ; i++) {
            if(numbers[i] == k){
                idx = i + 1;
                break;
            }
        }
        System.out.println(idx);

    }
}

코드는 이런식으로 진행되고 코드 설명을 간단히 하자면

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] numbers = new int[n];
        sc.nextLine();

문제는 첫번째 입력은 입력할 숫자의 갯수이니까 n 으로 입력변수를 받아주고 받은 n으로 배열을 바로 만들어서 다음 입력때 받을 배열을 준비하고 sc.nextLine(); 으로 엔터를 쳐서 다음 변수를 받게 한다.

        for (int i = 0; i < numbers.length ; i++) {
            numbers[i] = sc.nextInt();
        }
        sc.nextLine();

n의 갯수의 맞춰 만들어진 numbers의 배열 길이 만큼 반복하여 n 번 반복하여 숫자를 넣어준다 i 가 0 번인 이유는 배열이 0부터 시작하니까 0번부터 맞추어 주어야한다.

        int idx = 0;
        int k = sc.nextInt();

        for (int i = 0; i < numbers.length ; i++) {
            if(numbers[i] == k){
                idx = i + 1;
                break;
            }
        }
        System.out.println(idx);

배열에 입력한 수를 모두 받았으니 이제 배열만큼 반복하여 k에 맞는 숫자를 찾아나가면 된다.

idx를 지정해준 것은 i 번째 수가 k에 같으면 break를 걸어 반복문을 빠져나오기 때문에 i를 받아줄 변수를 만들고

idx = i + 1 는 문제에서는 0번이 시작번호가 아니라 1번이 시작번호기 때문에 + 1 을 해서 직관적으로 볼 수 있게 하였다.

profile
팀에 도움이 되고 싶은 개발자

0개의 댓글