해결 과정 하라는 대로 풀면 된다. 나의 풀이 def solution(): N, K = map(int, input().split()) nSet = set(input() for _ in range(N)) kSet = set(input() for _ in range(K)) answerList = list(nSet.intersection(kSet)) print(len(answerList)) for i in sorted(answerList): print(i) solution()
해결 과정 3개 세우고 최대 개수를 찾으라길래 완전탐색 말고 다른 방법이 있나 생각해봤더니 없었음. 결국 완전탐색 및 그래프 + BFS 문제였다. 1시간 이내로 걸림. 다만, 2차원 배열의 복사를 알아야 했다. 나의 풀이 from collections import deque from copy import deepcopy from itertools import combinations def bfs(laboratory, tuple, virus): # ((0, 1), (2, 1), (2, 3)) for i in range(3): laboratory[tuple[i][0]][tuple[i][1]] = 1 queue = deque(virus) # [(0, 1), (2, 1), (2, 3)] dx = [0, 1, 0..
해결 과정 조건이 많았던 풀이였다. 문제 자체를 이해하는 건 어렵지 않지만, 문자열 다루는 것과, 시간초과를 모두 고려해야하는 문제였다. 우선, 여러 번 뒤집는 것을 방지 하기 위한 count를 두고, deque()를 사용한다. popleft(), pop()을 모두 사용하기 위해서다. (물론 일반 arr에서도 pop(0), pop()을 사용할 수 있지만 시간복잡도가 더 된다.) [1,2,3,4] 이런 것을 입력 받거나 출력 하는 것도 이 문제의 포인트였다. 입력시 arr = deque(tmp[1:-1].split(',')) 출력시 "[" + ','.join(arr) + "]" 이 문제의 정답률이 왜 19%인지 알겠다 ㅋㅋ 나의 풀이 from collections import deque def soluti..
해결 과정 10의 자리 숫자 별로 계산해서, dictionary를 만들었다. {'F': 1, 'C': 1010, 'G': 100, 'B': 1, 'E': 10, 'D': 100, 'A': 10000} 이를 정렬하고, 9부터 내림차순으로 곱해주고 결과값을 구하면 된다. 나의 풀이 from collections import defaultdict def solution(): N = int(input()) words = [input() for _ in range(N)] dictionary = defaultdict(int) # {'A' : 100, 'B' : 1010, ... } # dictionary 만들기 for word in words: for idx, value in enumerate(reversed(wo..
해결 과정 완전 탐색으로 풀면 안되는 문제 유형 중 하나. 시간초과가 난다는 것은, 다른 문제 풀이 방법을 의도했다는 것이다. 해결법이 생각나지 않아 다른 분의 블로그를 참고해서 이해한 뒤, 코드는 스스로 작성해봤다. stack을 활용하여 푼 풀이다. 여기서 핵심은, 이전에 탐색 했던 탑 중, 의미없는 탑은 이후 탐색 대상에서 지워버려도 된다는 점이다. 참고로 문제에서 몇 번째 인지는, 1부터 시작한다는 점을 유의하자. 나의 풀이 def solution(): N = int(input()) tops = list(map(int, input().split())) stack = [] # [1, 6], [2, 9], ... [번째, 탑 높이] answer = [] for idx, top in enumerate(t..