목록전체 글 (48)
우주에서 글을 적어본다

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "무인도 여행" 문제를 풀었다.- 오늘 주제는 DFS/BFS이다. - DFS/BFS 두 가지 방식 모두로 풀 수 있는 문제이지만 더 편한 BFS로 풀었다.[나의 코드]from collections import dequedef solution(maps): n, m = len(maps), len(maps[0]) answer = [] dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] visited = [[False] * m for _ in range(n)] def bfs(x, y): count = 0 q = deque() q.append((x, y..

[오늘의 학습 키워드 및 문제]- 백준의 "점프 점프" 문제를 풀었다.- 오늘은 DFS/BFS가 주제다.- 문제를 읽고 나서 DFS가 편하겠다고 생각했다.[나의 코드]n = int(input())nums = list(map(int, input().split()))s = int(input())visited = [False] * nanswer = 1def dfs(start): global answer for i in (start + nums[start], start - nums[start]): if 0 문제에 방문 가능한 모든 돌의 개수를 적는 것이므로 visited 배열이 필요하다는 것을 알 수 있다. 그래서 만들었다.그리고 시작하는 것부터 셀 것이기 때문에 answer는 1..

[오늘의 학습 키워드 및 문제]- 리트코드의 "Find Right Interval" 문제를 풀었다.- 오늘 주제는 이분 탐색이다. 으아앙[나의 코드]from bisect import bisect_leftclass Solution: def findRightInterval(self, intervals: List[List[int]]) -> List[int]: temp = sorted((interval[0], i) for i, interval in enumerate(intervals)) result = [] for interval in intervals: end = interval[1] idx = bisect..

[오늘의 학습 키워드 및 문제]- 리트코드의 "Longest Increasing Sequence" 문제를 풀었다.- 오늘 주제는 이분 탐색인데, DP로도 풀 수 있는 듯 보였다.- 아 배고파서 기운 없다.[나의 코드]class Solution: def lengthOfLIS(self, nums: List[int]) -> int: def binary_search(result, num): left, right = 0, len(result) - 1 while left 설명하기 귀찮은데. To. 멍청한 미래의 나에게일단 빈 배열을 하나 만들어 준다.nums 배열에 있는 걸 하나씩 돌릴 거다.result 배열에서 num을 찾는다. 만약 그 인덱..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "괄호 회전하기" 문제를 풀었다.- 주제는 스택 및 큐이다.[나의 코드]def solution(s): answer = 0 s = list(s) for i in range(len(s)): stack = [] for j in range(len(s)): if stack: if stack[-1] == '(' and s[j] == ')': stack.pop() elif stack[-1] == '[' and s[j] == ']': stack.pop() e..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "할인 행사" 문제를 풀었다.- 오늘도 시뮬레이션 문제이다. 코테에 많이 나오는 유형이니 많이 푸는 게 좋겠다.- 두 가지 방식이 떠올라서 두 번 풀어봤다.[나의 코드]def solution(want, number, discount): answer = 0 check_list = [] for i in range(len(want)): for j in range(number[i]): check_list.append(want[i]) check_list.sort() for i in range(len(discount) - 9): if sorted(discount[i:i + 10]) == c..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "달리기 경주" 문제를 풀었다.- 오늘의 주제는 시뮬레이션이다.- callings 배열 길이가 백만 번까지 인데, 백만 번 부를 정도면 얼마나 치열한 경기일까라는 글이 너무 웃겼다. ㅋㅋㅋㅋ[나의 코드]def solution(players, callings): # 다음은 리스트 컴프리헨션으로 쓴 코드 #rank = {player: i for i, player in enumerate(players)} rank = {} for i in range(len(players)): rank[players[i]] = i for call in callings: cur_index = rank[call] ..

[오늘의 학습 키워드 및 문제]- 리트코드의 "Evaluate Division" 문제를 풀었다.- 오늘도 그래프 문제가 나왔다.[나의 코드]# BFS 풀이from collections import dequeclass Solution: def calcEquation(self, equations: List[List[str]], values: List[float], queries: List[List[str]]) -> List[float]: graph = {} for i in range(len(equations)): x, y = equations[i][0], equations[i][1] if x not in graph: ..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "대충 만든 자판" 문제를 풀었다.- 그래프가 주제인데, 가장 먼저 떠오르는 것은 그냥 구현 아닌가 싶다.- 그래프도 어떤 그래프를 말하는지 모르겠는데, 딕셔너리를 이용해서 풀어 보았다.[나의 코드]def solution(keymap, targets): answer = [] for target in targets: result = 0 for letter in target: idx = 101 flag = False for key in keymap: value = key.find(letter) ..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "마법의 엘리베이터" 문제를 풀었다.- 그리디 알고리즘을 활용하여 푸는 문제다.- 민수는 엘리베이터를 만들 게 아니라 마법 빗자루를 쓰는 슬기로움을 발휘하도록 하자.[나의 코드]def solution(storey): answer = 0 while storey: remainder = storey % 10 if (remainder == 5 and storey // 10 % 10 >= 5) or remainder > 5: storey += 10 - remainder answer += 10 - remainder else: answer +..