728x90
반응형

딕셔너리(해시)로 풀었다. 공통된 문자열이 개수를 구하면 되는 문제다.

import sys
input = sys.stdin.readline

n = int(input())
d1, d2 = {}, {}
for _ in range(n):
    s = input()
    d1[s] = d1.get(s, 0) + 1
for _ in range(n):
    s = input()
    d2[s] = d2.get(s, 0) + 1
res = 0
for t in d1.keys():
    if t in d2:
        res += min(d1[t], d2[t])
print(res)
728x90
반응형
728x90
반응형

기본적인 백트래킹 문제이다. 그냥 리스트를 사용해서 중복인지 아닌지 확인하면 무조건 시간초과가 나와서,

딕셔너리(해시)를 사용해서 풀었다. 해시는 진짜 진짜 진짜 엄청 빠르다!!

def dfs(depth):
    if depth == M:
        s = ' '.join(map(str, li))
        if s not in d:
            d[s] = 1
            print(s)
        return ;
    for i in range(N):
        if check[i]:
            continue
        li.append(nums[i])
        check[i] = 1
        dfs(depth+1)
        li.pop()
        check[i] = 0

N, M = map(int, input().split())
nums = sorted(map(int, input().split()))
d = {}; li = []
check = [0]*N
dfs(0)
728x90
반응형
728x90
반응형

기본적인 해시 문제이다.

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())
d = {}
for _ in range(N):
    u, v = sys.stdin.readline().rstrip().split()
    d[u] = v
for _ in range(M):
    print(d[sys.stdin.readline().rstrip()])
728x90
반응형
728x90
반응형

기본적인 해시 문제이다. dict가 확실히 속도가 빠른 것 같다. 그냥 리스트로 풀면 통과가 안된다. 

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())
d1, d2 = {}, {}
for i in range(1, N+1):
    s = sys.stdin.readline().rstrip()
    d1[s] = i
    d2[i] = s
    
for _ in range(M):
    s = sys.stdin.readline().rstrip()
    if s.isdigit():
        print(d2[int(s)])
    else:
        print(d1[s])

 

728x90
반응형
728x90
반응형

자료 구조 문제인데 그냥 집합을 사용해서 풀었다. 리스트로 풀어도 통과될 것 같다.

import sys

s = set()
for _ in range(int(sys.stdin.readline())):
    name, t = sys.stdin.readline().split()
    if t == "enter":
        s.add(name)
    elif t == "leave":
        s.remove(name)
for a in sorted(s, reverse=True):
    print(a)
728x90
반응형

+ Recent posts