from collections import deque
def solution(s):
q = deque()
for i in range(len(s)):
if(len(q)==0 or s[i]!=q[len(q)-1]):
q.append(s[i])
elif(s[i]==q[len(q)-1]):
q.pop()
return 1 if len(q)==0 else 0
import sys
from functools import cmp_to_key
input = sys.stdin.readline
def cmpDic(a,b):
if(a[1]<b[1]):
return 1
elif (a[1]>b[1]):
return -1
if(len(a[0])<len(b[0])):
return 1
elif(len(a[0])>len(b[0])):
return -1
if a>b:
return 1
else:
return -1
N, M= map(int,input().split())
res={}
for i in range(N):
a=input().rstrip()
if(len(a)<M):
continue
if(a in res):
res[a]+=1
else:
res[a]=1
res = [(k, v) for k, v in res.items()]
res.sort(key=cmp_to_key(cmpDic))
for i,j in res:
print(i)
import sys
input = sys.stdin.readline
m, n =map(int,input().rstrip().split())
keyword = {}
unUse=m
for i in range(m):
keyword[input().rstrip()]=False
for i in range(n):
memo = input().rstrip().split(',')
for j in memo:
if(j in keyword):
if(not keyword[j]):
keyword[j]+=True
unUse-=1
print(unUse)
풀이
사용되지 않은 키워드의 개수를 구해라
키워드를 입력받아 딕셔너리 키워드:0 형태로 만들어준다.
unUse , 사용되지 않은 키워드의 개수를 세는 변수는 만들어준다
블로그에 사용한 키워드를 memo에 입력받고, 언급된 키워드들을 제거해준다.
keyword에 없는 단어들은 체크하지 않는다.
keyword에 있는데 value가 False이 아닌 단어는 이미 한번 이상 사용된 단어이므로 넘어간다.
keyword에 있는 단어인데 value가 False인경우 사용하지 않은 단어이므로 True로 바꿔준 후 unUse-=1을 해준다
def solution(dirs):
answer = 0
num = {'U':(0,1),'D':(0,-1),'R':(1,0),'L':(-1,0)}
res={}
visited = set()
x, y = 0, 0
for i in dirs:
nx, ny = x + num[i][0], y + num[i][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
if ((x, y), (nx, ny)) not in visited:
answer += 1
visited.add(((x, y), (nx, ny)))
visited.add(((nx, ny), (x, y)))
x, y = nx, ny
return answer
풀이
중복을 제외하고 방문한 선분을 체크하기
입력받는 문자열에 따라 이동하는 좌표값 딕셔너리를 구현.
입력에 따라서 x,y를 움직인다. -5 ~ 5의 범위는 넘어가면 continue 해준다,
set()에 이동좌표를 넣어서 만약 그 좌표가 존재하지 않으면 answer+=1해주고, 존재하면 중복한 값이라고 판단하고 넘어간다.