카카오 기출 - 키패드 누르기
def solution(numbers, hand): answer = '' middleNum = { 2: [0, 1], 5: [1, 1], 8: [2, 1], 0: [3, 1] } l = [3, 0] r = [3, 2] for num in numbers: if num in (1, 4, 7): answer += 'L' l[0] = int(num / 3) elif num in (3, 6, 9): answer += 'R' r[0] = int(num / 3 - 1) else: # 2,5,8,0 y, x = middleNum[num] Rdist = abs(r[0] - y) + abs(r[1] - x) Ldist = abs(l[0] - y) + abs(l[1] - x) if Rdist < Ldist: answer +..
더보기
백준 11559 [bfs]
answer = 0 arr = [input() for _ in range(12)] for i in range(12) : arr[i] = list(arr[i]) def bfs(i, j, visited) : target = arr[i][j] q = [[i,j]] dirs = [[1,0],[-1,0],[0,1],[0,-1]] ret = [[i,j]] while q : y ,x = q.pop(0) for dir in dirs: nextY, nextX = y+dir[0], x+dir[1] if nextX >=0 and nextX =0 and nextY < 12 and arr[nextY][nextX] == target and not visited[nextY][nextX]: visited[..
더보기
프로그래머스 - 테두리 회전하기
2차원 배열 다루는 문제인데,, 의도에 맞게 푼건진 모르겠다. 무슨 의도로 낸 문제일까... 딱히 어려울 거 없이 한큐에 달린 문제 def rotate(q, arr) : y1, x1, y2, x2 = q y1, x1, y2, x2 = y1-1, x1-1, y2-1, x2-1 tmp = arr[y1+1][x1] minimum = tmp for i in range(x1, x2+1) : tmp, arr[y1][i] = arr[y1][i], tmp minimum = minimum if minimum < tmp else tmp for i in range(y1+1, y2+1) : tmp, arr[i][x2] = arr[i][x2], tmp minimum = minimum if minimum < tmp else tm..
더보기
릿코드 5 - Longest Palindromic Substring
class Solution: def longestPalindrome(self, s: str) -> str: answer = [0, 0] for i in range(1, len(s)-1): l, r = i, i while True : if s[l] == s[r]: l, r = l - 1, r + 1 if l == -1 or r == len(s): l, r = l + 1, r - 1 break else : l, r = l + 1, r - 1 break if answer[1] - answer[0] < r - l: answer = [l, r] for i in range(0, len(s) - 1): if s[i] == s[i + 1]: l, r = i, i + 1 while True : if s[l] == s[r..
더보기