알고리즘 문제 풀이/Programmers24 [20회차] 영어 끝말잇기 Programmers Level.2 영어 끝말잇기 def solution(n, words): answer = [] before = words[0] for num, word in enumerate(words): if num == 0: continue if word[0] == before[-1] and word not in words[:num]: # 전 단어의 끝 문자와 현재 단어의 첫 문자가 같고 이전에 나오지 않았다면 패스 before = word continue return [num % n + 1, num // n + 1] # 그게 아니면 값 반환 return [0, 0] # 문제 없이 끝말잇기 성공했으면 0,0 반환 2021. 12. 31. [19회차] 후보키, 2개 이하로 다른 비트 Programmers Level.2 후보키 from itertools import combinations def solution(relation): answer_list = [] num_list = [] row = len(relation) # 튜플 개수 column = len(relation[0]) # 속성 개수 for i in range(column): num_list.append(i) for i in range(1, column + 1): for j in combinations(num_list, i): # 조합 array = [[] for _ in range(row)] for k in range(row): for l in j: array[k].append(relation[k][l]) array[k] .. 2021. 12. 29. [18회차] 캐시 Programmers Level.2 캐시 def solution(cacheSize, cities): if cacheSize == 0: return len(cities) * 5 answer = 0 cache = [] for city in cities: city = city.upper() if city in cache: cache.remove(city) answer += 1 else: answer += 5 if len(cache) == cacheSize: cache.pop(0) cache.append(city) return answer - list를 이용해서 구현 def solution(cacheSize, cities): import collections cache = collections.deque(max.. 2021. 12. 28. [17회차] 괄호 회전하기, H-index, 예상 대진표, 순위 검색, 올바른 괄호 Programmers Level.2 괄호 회전하기 def correctstring(st): cnt = [0, 0, 0] # 소괄호, 중괄호, 대괄호 for i in st: if i == '(': cnt[0] += 1 if i == ')': cnt[0] -= 1 if i == '{': cnt[1] += 1 if i == '}': cnt[1] -= 1 if i == '[': cnt[2] += 1 if i == ']': cnt[2] -= 1 if any(j < 0 for j in cnt): return False # 올바르지 않은 문자열이면 False if all(j == 0 for j in cnt): return True # 올바른 문자열이면 True return False def solution(s): n.. 2021. 12. 27. 이전 1 2 3 4 5 6 다음