문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

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

풀이

  • 문자열에서 연속으로 오는 문자를 제거할 때 전부 제거할 수 있는지를 확인한다.
  • 스택의 개념을 사용하면 손쉽게 풀 수 있음
  1. 스택 역할을 해주기 위해 deque 선언
  2. s문자열을 for문으로 돌면서 문자 제거
    1. q가 비어있거나 q의 마지막 문자와 현재의 문자가 다르면 q에 넣어준다.
    2. 만약 q의 마지막 문자와 현재 문자가 같으면 q를 pop해준다.
  3. 마지막에 q가 비어있을 경우 1을 아닐경우 0을 출력한다.

문제

 

22233번: 가희와 키워드

1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을

www.acmicpc.net

코드

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)

풀이

  • 사용되지 않은 키워드의 개수를 구해라
  1. 키워드를 입력받아 딕셔너리 키워드:0 형태로 만들어준다.
  2. unUse , 사용되지 않은 키워드의 개수를 세는 변수는 만들어준다
  3. 블로그에 사용한 키워드를 memo에 입력받고, 언급된 키워드들을 제거해준다.
    1. keyword에 없는 단어들은 체크하지 않는다.
    2. keyword에 있는데 value가 False이 아닌 단어는 이미 한번 이상 사용된 단어이므로 넘어간다.
    3. keyword에 있는 단어인데 value가 False인경우 사용하지 않은 단어이므로 True로 바꿔준 후 unUse-=1을 해준다

+ Recent posts