kakao 2018 5

[Programmers][Python] KAKAO 2018 N진수 게임

진법수로 변환할때 맨 앞부터 채울 생각을 했는데 다른 사람들 풀이보니 전부 뒷자리부터 채웠다.. 생각해보니 그렇게 해도 전혀 상관없는데 나는 무슨짓을 한건지.. def solution(n, t, m, p): answer = '' parse_table = {i: hex(i)[2:].upper() for i in range(16)} p -= 1 tmp = '0' num = 1 while len(tmp) = k: k *= n k //= n now = num while k: a = now // k tmp += parse_table[a] now -= a * k k //= n num += 1 for i in range(p, p + t * m, m): answer..

[Programmers][Python] KAKAO 2018 파일명 정렬

파일이름 뒤에 f를 붙혀 tail없는 예외를 없앤 후 head, number를 heap에 넣은 후 뽑아내며 정렬 from heapq import heappop, heappush def solution(files): answer = [] sort_arr = [] for pos, each_file in enumerate(files): tmp = each_file + 'f' flag = 0 for idx, char in enumerate(tmp): if not flag and char.isdigit(): start = idx flag = 1 elif flag and not char.isdigit(): end = idx break head, number = each_file[:start], each_file[s..

[Programmers][Python] KAKAO 2018 압축

idx하나씩 늘려주며 문자열 사전에 추가하고 -1한 글자의 사전값은 answer에 추가 def solution(msg): msg += '.' answer = [] dic = {chr(i + ord('A')): i + 1 for i in range(26)} idx, last_idx = 0, len(msg) - 1 new_hash = 27 while idx < last_idx: start = msg[idx] while idx < last_idx and start in dic: idx += 1 start += msg[idx] answer.append(dic[start[:-1]]) dic[start] = new_hash new_hash += 1 return answer

[Programmers][Python] KAKAO 2018 프렌즈 4블록

자주나오는 유형. 규칙에따라 블록 부수고 중력작용. def bomb_block(b, m, n): block = set() for i in range(m - 1): for j in range(n - 1): if b[i][j] and b[i][j] == b[i][j + 1] == b[i + 1][j] == b[i + 1][j + 1]: for dx, dy in [(0, 0), (1, 0), (0, 1), (1, 1)]: nx, ny = i + dx, j + dy block.add((nx, ny)) if not block: return 0, 0 for x, y in block: b[x][y] = 0 new_board = [[0] * n for _ in range(m)] for j in range(n): idx..

[Programmers][Python] KAKAO 2018 뉴스클러스터링

처음푼줄 알았는데 예전에 풀었었다.. 교집합, 합집합으로 간단히 풀린다. def make_set(s): a = set() for i in range(len(s) - 1): now = s[i:i+2] if now.isalpha(): while now in a: now += '1' a.add(now) return a def solution(str1, str2): str1, str2 = str1.lower(), str2.lower() a = make_set(str1) b = make_set(str2) if not a | b: return 65536 return len(a & b) * 65536 // len(a | b)