숫자 카드2(백준)

링크텍스트

문제 이해

숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.

나만의 이해

숫자를 주고 마지막줄에 주어진 숫자가 각 몇개인지 카운트하는 문제이다.

Python

import sys
from collections import Counter as ct


num = input()
read =  ct(map(int, sys.stdin.readline().split()))
guess = input()
read2 = map(int, sys.stdin.readline().split())

for ele in read2:
    print(read[ele],end = " ")

파이썬 collections 패키지를 사용하면 별로 어렵지 않다. Counter는 자동으로 dict 형태로 변환해주기 때문에 그냥 Counter로 만들고 해당 원소 갯수를 반환해주면 구현할수있다. print(ele, end = " ") 파이썬 3에는 자체적으로 print하면 줄바꿈 즉 end='\n'이 설정되어 있다. 저런식으로 바꿔주면 한칸씩 띄어진 상태로 프린트가 가능하다.

내가 사용하는 컴파일러는 파이썬 2.x여서 저 print가 안된다. 그럴때는 당황하지말고

from __future__ import print_function

이걸 추가해 주면 된다.

C++

#include <iostream>
#include <map>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int num;
    cin>> num;
    map<int,int> m;
   for(int i=0; i<num; i++){
       int intput;
       cin >> intput;
       m[intput]++;
       
       
   }
   
   cin >>num;
   for(int i =0;i<num;i++){
       int intput;
       cin >> intput;
       cout << m[intput]<<" ";
       
   }
   return 0;
}

cpp에서는 map이라는 객체를 사용하면 되는데, 쉽게 생각하면 python dict이랑 매우 유사하다. 저런식으로 m[intput] 접근하면 없으면 0, 있으면 +1 형식으로 만들어서 찾아준다.

좋은 웹페이지 즐겨찾기