전체 글

말보다는 실천하는 사람
😉 아이디어1. _!skill!_적용 값을 일괄처리 후 _!board!_적용 👉 누적합 개념 사용 (카카오 가이드 참고)😉 코드def solution(board, skill): answer = 0 tmp = [[0 for __ in range(len(board[0]) + 1)]for _ in range(len(board) + 1)] for s in skill: # 1: 공격, 2: 회복 typ, s_y, s_x, e_y, e_x, deg = s if typ == 1: tmp[s_y][s_x] += deg tmp[s_y][e_x + 1] -= deg tmp[e_y + 1][s..
😁 아이디어1. BFS를 통해 최단거리를 찾는 방법을 2회에 걸쳐 진행한다.2. 시작점 -> 레버, 레버 -> 끝점3. 2회 동안 카운팅을 반환😁 코드from collections import dequedef solution(maps): answer = 0 arr = [] sPos = [] ePos = [] lPos = [] width = len(maps[0]) height = len(maps) for idx, m in enumerate(maps): lst = list(m) if 'S' in lst: sPos = [idx, lst.index('S')] if 'E' in lst: ..
😄 아이디어1. Y의 최대값 만큼 dp 배열 생성2. 배열 인덱스 == cost 👉 기존 값과 비교해 최소값 반영😄 코드from collections import dequedef solution(x, y, n): MAX_VAL = 1_000_001 dp = [10_000] * MAX_VAL dp[x] = 0 for i in range(x, MAX_VAL): if dp[x] == 10_000: continue if i + n ✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154538?language=python3
😄 아이디어1. 연결점을 저장한 각 노드 생성2. 그래프 이동 시 시간 저장 배열 생성3. BFS를 통한 탐색 ☝️최단 경로를 찾는 경우는 BFS 활용 명심😄 코드from collections import dequeglobal arr;def bfs(graph, key): global arr visited[key] = 1 q = deque([key]) while q: x = q.popleft() for node in graph[x]: if arr[node] == -1: q.append(node) arr[node] = arr[x] + 1def solution(n, road..
😉 아이디어1. 완성 틱택토 개수, O or X 개수 확인2. 틱택토의 게임이 완성되지 않는 경우의 수 예외처리😉 코드oTic = 0xTic = 0def solution(board): answer = -1 xCnt = 0 oCnt = 0 def checkTic(s): global oTic global xTic if s == 'OOO': oTic += 1 elif s == 'XXX': xTic += 1 for i in range(0, 3): checkTic(board[i]) vertical = board[0][i] + board[1][..
😄 아이디어 1. _!a, b!_ 의 값 중 하나는 내림차순, 남은 하나는 오름차순으로 정렬한다. 👉 코드에서는 a를 내림차순 b를 오름차순 정렬 2. a의 값이 내림차순으로 정렬되고 있기에 탐색 중 갱신되는 _!maxB!_의 값보다 작은 b가 탐색되면 인센티브를 받지 못하는 사원이다. ✔️ 코드 def solution(scores): answer = 1 wanho = scores[0] rs = sorted(scores, key = lambda x: (-x[0], x[1])) maxB = 0 for score in rs: if (score[0] > wanho[0] and score[1] > wanho[1]): return -1 if score[1] >= maxB: maxB = score[1] if wan..
😄 아이디어 1. 선대칭을 통해 일직선 형성 👉 두 좌표 사이의 값 계산 2. 상하좌우 당구대를 활용한 원쿠션 결과를 확인 👉 X축 혹은 Y축에서 동일 선상 위치 시 계산 제한 😄 풀이 def solution(m, n, startX, startY, balls): answer = [] for ball in balls: arr = [] if (startY != ball[1] or startX > ball[0]): arr.append(calcDistance([startX + (m - startX) * 2, startY], ball)) if (startY != ball[1] or startX < ball[0]): arr.append(calcDistance([-startX, startY], ball)) if (s..
😄 아이디어 1. _!len_list!_리스트로 접두사로 비교될 길이 저장 👉 0번째 길이와 같은 값들은 우선 저장 2. _!len_list!_의 길이만큼 잘라 _!dt!_변수에 _!key!_보관 👉 동일한_!key!_에 값이 있으면 예외처리 3. 예외처리된 것이 없으면 현재 값 _!dt!_보관 & 현재 값 길이 대조 후_!len_list!_에 보관 def solution(phone_book): answer = True dt = {} phone_book.sort(key = len) len_list = [len(phone_book[0])] for i, val in enumerate(phone_book): if len(val) == len_list[0]: dt[val] = dt.get(val, 0) + 1 ..
thisisdj
codenextdoor