목록전체 글 (48)
우주에서 글을 적어본다
[오늘의 학습 키워드 및 문제]- 리트코드의 "First Day Where You Have Been in All the Rooms" 문제를 풀었다.- 마지막날 주제는 바로 DP(다이나믹 프로그래밍)이다.[나의 코드]class Solution: def firstDayBeenInAllRooms(self, nextVisit: List[int]) -> int: MOD = 10 ** 9 + 7 n = len(nextVisit) dp = [0] * n for i in range(n - 1): dp[i + 1] += (2 * dp[i] - dp[nextVisit[i]] + 2) % MOD return dp[-..
[오늘의 학습 키워드 및 문제]- 리트코드의 "Unique Paths II" 문제를 풀었다.- 어제 문제와 마찬가지로 DP(다이나믹 프로그래밍)가 주제다.- 에효 벌써부터 힘 빠진다.[나의 코드]class Solution: def uniquePathsWithObstacles(self, grid: List[List[int]]) -> int: m = len(grid) n = len(grid[0]) def dfs(x, y, l, memo): if x =m or y = n or l[x][y] == 1 or l[x][y] == 2: return 0 if x == m-1 and y == n-1: ..
[오늘의 학습 키워드 및 문제]- 리트코드의 "Unique Paths" 문제를 풀었다.- 오늘 주제는 DP(다이나믹 프로그래밍)이다.[나의 코드]class Solution: def uniquePaths(self, m: int, n: int) -> int: aboveRow = [1] * n for _ in range(m - 1): currentRow = [1] * n for i in range(1, n): currentRow[i] = currentRow[i - 1] + aboveRow[i] aboveRow = currentRow return aboveRow[-1]다..
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "광물 캐기" 문제를 풀었다.- 오늘 주제는 어제와 마찬가지로 그리디(Greedy)다. - ^^...;;[나의 코드]def solution(picks, minerals): sum = 0 for x in picks: sum += x # 캘 수 있는 광물의 개수 num_min = sum * 5 if len(minerals) > num_min: # 주어진 광물이 캘 수 있는 광물 수보다 크면 minerals = minerals[:num_min] # 광물 조사 cnt_min = [[0, 0, 0]for x in range(10)] # dia, iron, stone for i ..
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "디펜스 게임" 문제를 풀었다.- 오늘 주제는 오랜만에 그리디(Greedy)다.[나의 코드]import heapqdef solution(n, k, enemy): heap = [] for i in range(len(enemy)): heapq.heappush(heap, enemy[i]) if len(heap) > k: n -= heapq.heappop(heap) if n 동네 사람들, 제한 사항 좀 보세요. 아주 숫자가 미쳐 돌아가는 것이 보일 것이다.1 ≤ n ≤ 1,000,000,0001 ≤ k ≤ 500,0001 ≤ enemy ≤ 1,000,000그러니..
[오늘의 학습 키워드 및 문제]- 백준의 "부등호" 문제를 풀었다.- 오늘 주제는 완전탐색이다.[나의 코드]k = int(input())signs = list(input().split())visited = [0] * 10answer = []def check(a, b, op): if op == ' b: return False if op == '>': if a 나중에 설명을 추가하자[오늘의 회고]- 왜 컴퓨터는 직관적이지 못하는가. 인간은 가능한데.- 어제 너무 피곤해서 오늘 문제는 넘어갈까 하다가 풀었다 ^^;; 끝!
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "전력망을 둘로 나누기" 문제를 풀었다.- 오늘 주제는 완전 탐색이다.- 문제 이해가 어려워 보인다. ㅋ[나의 코드]# 입력해주세요코드 설명 및 그 밖[오늘의 회고]---
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "게임 맵 최단거리" 문제를 풀었다.- 오늘 주제는 BFS 넓이 우선 탐색이다. - 기본적인 문제였던 것 같다.[나의 코드]from collections import dequedef solution(maps): n, m = len(maps), len(maps[0]) q = deque() q.append((0, 0)) dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] ..
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "타겟 넘버" 문제를 풀었다.- 오늘 주제는 DFS이다.[나의 코드]def solution(numbers, target): answer = 0 def dfs(i, now): nonlocal answer if i == len(numbers): if now == target: answer += 1 return add = dfs(i + 1, now + numbers[i]) sub = dfs(i + 1, now - numbers[i]) dfs(0, 0) return answernonlo..
[오늘의 학습 키워드 및 문제]- 프로그래머스의 "리코쳇 로봇" 문제를 풀었다.- 오늘 주제는 BFS이다.- 저번 문제보다 조건이 하나 늘어났다.[나의 코드]from collections import dequedef solution(board): n, m = len(board), len(board[0]) visited = [[False] * m for _ in range(n)] dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] def bfs(x, y): q = deque() q.append((x, y, 0)) visited[x][y] = True while q: x, y..