728x90
반응형

나는 3가지 방법을 시도해보았다.

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

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

VERSION 4.0

import sys
from collections import Counter

N = int(sys.stdin.readline())
A = list(map(int,sys.stdin.readline().split()))
M = int(sys.stdin.readline())
B = list(map(int,sys.stdin.readline().split()))
dic  = Counter(A)

for i in B:
    if dic.get(i):
        print(dic[i] , end = ' ')
    else:
        print(0, end= ' ')

VERSION 3.0

import sys
import copy

N = int(sys.stdin.readline())

A = map(int, sys.stdin.readline().split())
S = {}
res = {}
M = int(sys.stdin.readline())
B = map(int, sys.stdin.readline().split())

C = copy.deepcopy(B)
for i in B:
    S[i] = 0
res = copy.deepcopy(S)
for i in A:
    if S.get(i) is not None:
        res[i] +=1
for i in C:
    print(res.get(i) , end = ' ')

 

리스트 없이 A, B 값을 받아왔고, 출력할때 B값은 이미 사용되어서 그런지 오류가 났다. ==> 이부분 찾아봐야겠다.

 

 

 

VERSION 2.0

import sys
import copy

N = int(sys.stdin.readline())

A = list(map(int, sys.stdin.readline().rstrip().split()))
S = {}
res = {}
M = int(sys.stdin.readline())
B = list(map(int, sys.stdin.readline().rstrip().split()))
for i in range(len(B)):
    S[B[i]] = 0
#     res[i] = 0
#print(S.get(16))
res = copy.deepcopy(S)
for i in A:
    if S.get(i) is not None:
        #print('good')
        res[i] +=1
for i in B:
    print(res.get(i) , end = ' ')

리스트로 A,B 값 받아왔다.  S.get(i) 할때 i값은 key 값이며 value 값이 is not None : 존재한다면 이 주효했다.

 

 

VERSION 1.0

 

import sys

n = int(sys.stdin.readline())
D = list(map(int, sys.stdin.readline().rstrip().split()))
cnt = 0
m = int(sys.stdin.readline())
E = list(map(int, sys.stdin.readline().rstrip().split()))
A = [0 for i in range(20000001)]

for i in range(len(D)):
    A[D[i]+10000000] += 1

for j in E:
    print(A[j+10000000] , end =' ')

원초적인 방법을 사용해 보았다.(브루트 포스)

728x90
반응형

+ Recent posts