Coding Test Study/Backjoon

[Coding/Backjoon] 10807번 개수 세기

똑똑한망치 2023. 11. 20. 15:28
728x90
반응형

 

https://www.acmicpc.net/problem/10807

 

10807번: 개수 세기

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거

www.acmicpc.net

 

 

 

 

 


 

 

 

1. 문제 풀이 방법


입력받은 문자열은 공백으로 구분되어져 있으므로 분리한 후 배열에 저장하고 입력된 V 와 일치하면 cnt 변수를 1씩 증가시킨다.

 

 

(1) 방법 1

  • 반복문을 사용하여 개수 찾기
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();    // 정수의 개수
        sc.nextLine();

        String[] str = sc.nextLine().split(" ");

        int v = sc.nextInt();    // 찾으려고 하는 정수 v
        sc.nextLine();

        int cnt = 0;
        for (int i = 0; i < n; i++) {
            if (str[i].equals(Integer.toString(v))) {
                cnt += 1;
            }
        }

        System.out.println(cnt);


    }
}

 

 

 


 

 

 

(2) 방법 2

  • HashTable을 사용하여 개수 구하기
import java.util.Hashtable;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();     // 정수의 개수 N
        sc.nextLine();
        
        String[] str = sc.nextLine().split(" ");
        
        int v = sc.nextInt();    // 찾으려고 하는 정수 V
        sc.nextLine();
        
        Hashtable<String,Integer> ht = new Hashtable<>();     //Hashtable 생성
        
       // Hashtable 에 데이터 추가
       // 만약 입력된 키 값에 value 값이 없다면 0을 반환
       // 입력된 키 값에 value 값이 존재한다면 1을 추가하여 덮어쓰기
        for (int i = 0; i < n; i++) {
        	ht.put(str[i], ht.getOrDefault(str[i],0)+1);     
        }
        
        
         // int 형으로 선언하게 되면 값이 없을 시 오류 발생하면 프로그램 종료됨
         // null 값이 들어갈 수 있는 Integer 형으로 count 생성
        Integer count = ht.get(Integer.toString(v));   
        
        if (count != null) {
        	System.out.println(count);
        } else {
        	System.out.println(0);
        }
    }
}

 

반응형