BAEKJOON_study

[백준_JAVA] 10807 개수세기 여러가지 풀이방법

universe8 2023. 9. 24. 22:09

#1. String타입 배열

#2. int 타입 배열

#HashMap

 

#1. String타입 배열

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        int N = Integer.parseInt(br.readLine());    //배열안에 들어갈 정수의 갯수 
        //string 타입의 배열을 선언하면 입력한 여러개의 숫자를 한번에 다 넣을 수 있음
        String[] input = br.readLine().split(" ");           
 		int a = Integer.parseInt(br.readLine());    //비교할숫자!
        int cnt = 0;       
        for(int i=0; i<N; i++){
  //대신 a와 비교할때는 int타입의 변수b를 선언해주어 값을 담아 비교해야 함.
            int b = Integer.parseInt(input[i]);
            if( b == a ){
                cnt++;
            }          
        }
        System.out.println(cnt);    
    }
}

 

 

#2. int 타입 배열

 

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());    //배열안에 들어갈 숫자갯수  
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        //N개의 공간을 가진 정수타입 배열 input 선언       
        int[] input = new int[N];      
        //int타입의 변수를 선언해주면 for문을 통해 하나씩 값을 넣어줘야 한다.
        for(int i=0; i<N; i++){
            input[i] = Integer.parseInt(st.nextToken());  
            }          
        int a = Integer.parseInt(br.readLine());    //비교할 숫자 입력받음
        int cnt = 0;                                //배열 안에 같은 숫자가 몇개 있는지 카운트   
        for(int i=0; i<N; i++){
            if( input[i] == a ){
                cnt++;
            }          

        }
        System.out.println(cnt);     
    }
}

 

 

#HashMap

HashMap 자바에서 사용할 있는 데이터 저장 방법 하나로,-(key-value) 쌍으로 데이터를 저장하는 해시 테이블 기반의 컬렉션이다. 특정 정보를 기억할 때 활용할 있다.

사전(Dictionary) 비유하면, 사전의 '단어'와 그 ''을 기록하는 것과 비슷하다.

 '키'는 단어에 해당하고, '값'은 그 단어의 뜻에 해당한다. 특정 단어(키)를 찾으면 그에 맞는 뜻(값)을 쉽게 찾을 수 있다.

 

다른 예로 학생들의 이름과 학번을 기록할 때, 학번이 '키'이고 그에 해당하는 이름이 '값'이라고 생각하면 다. 학번을 알면 쉽게 이름을 찾을 수 있다. 이렇게 HashMap을 사용하면 데이터를 관리하고, 필요한 정보를 빠르게 찾을 수 있다.

HashMap 이용해서 문제를 풀어보면,

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 입력 받기
        int N = Integer.parseInt(br.readLine()); //배열안에 들어갈 정수의 개수        
        int[] arr = new int[N]; // 정수 배열
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        int a = Integer.parseInt(br.readLine()); // 찾으려는 정수 a
        // HashMap을 사용하여 같은 정수 갯수 카운트
        HashMap<Integer, Integer> countMap = new HashMap<>();
        for (int i = 0; i < N; i++) {
            int num = arr[i];
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }
        // a와 같은 정수의 갯수 출력
        int count = countMap.getOrDefault(a, 0);
        System.out.println(count);
    }
}
반응형

'BAEKJOON_study' 카테고리의 다른 글

[백준_JAVA] 10871번_X보다 작은 수  (0) 2023.10.01
[백준_JAVA] 10951번_A+B - 4  (0) 2023.09.21
[백준_JAVA] 11021번_A+B-7  (0) 2023.09.18
[백준_JAVA] 15552번 빠른 A+B  (0) 2023.09.15
[백준_JAVA] 25304 영수증 풀이  (1) 2023.09.14