ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 10807 ] 개수 세기 - array, vector
    알고리즘/BOJ 2021. 7. 26. 17:40

    <  array, vector > - < solve등급 >

     

    [ 10807 ]

    개수 세기

    총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.

     

    :: 입력

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

    :: 출력

    첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.


     

    - try 1 

    : 벡터에 다 집어넣고 타겟 숫자가 있는지 확인하려다가 

    숫자의 범위가 크지 않아서 그냥 미리 배열을 만들어 두고 풀었음

     

     

      아이디어  

    다른 사람들 풀이를 보니까

    100짜리 배열 하나를 만들고 거기에 숫자를 저장해서 순회하면서 풀었음

    메모리를 덜 먹는 방식

     

      정답 코드  

    #include <string>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define endl "\n"
    
    int plus_num[101] = { 0, };
    int minus_num[101] = { 0, };
    
    int main() {
    	int n = 0;
    	cin >> n;
    
    	for (int i = 0; i < n; i++) {
    		int k = 0; 
    		cin >> k;
    		if (k >= 0) { plus_num[k]++; }
    		else { minus_num[-k]++; }
    	}
    
    	int target = 0;
    	cin >> target;
    
    	if (target >= 0) { cout << plus_num[target]; }
    	else { cout << minus_num[-target]; }
    	
    }

     

      다른  정답  코드  

    #include <stdio.h>
    
    int main(void){
      int A[100], N, v, cnt = 0;
      scanf("%d", &N);
      for (int i = 0; i < N; i++) {
        scanf("%d", &A[i]);
      }
      scanf("%d", &v);
      for (int j = 0; j < N; j++) {
        if (A[j] == v) cnt++;
      }
      printf("%d", cnt);
    }

     

준생e