목록python (182)
rose_brown
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42884 2. 코드python 1def solution(routes): routes = sorted(routes, key = lambda x : x[1]) last_camera = -30001 answer = 0 for route in routes: if last_camera 풀이차량이 빠져나가는 지점을 기준으로 정렬현재 차량의 진입 지점이 이전 카메라 보다 크면→ 현재 차량이 빠져나가는 지점에 카메라 설치→ 새로운 카메라 설치 3. 메모한번에 많이 보기 위해 어떤 기준으로 해야 할지 고민해야 하는 문제차량이 나갈때 다른 차량과 겹치는가? → 차량이 빠져나가..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42885 2. 코드python 1def solution(people, limit): answer = 0 people.sort() a = 0 b = len(people) - 1 while a 풀이몸무게 오름차순 정렬a - 가장 가벼운 사람 index, b - 가장 무거운 사람의 index함께 보트에 탈수 있는 경우 → a + b ≤ limit 인경우전체 사람 수에서 함께 탄 사람의 수를 빼고 반환 3. 메모투 포인터 사용함께 탈 수 있는 경우를 생각하면 다른 사람은 어짜피 혼자 타기 때문에 쉽게 계산할 수 있음
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42883 2. 코드python 1def solution(number, k): answer = [] for num in number: while k > 0 and answer and answer[-1] 풀이answer에 값을 넣고 현재 값과 비교해서 큰 값을 생성현재 제거해야 할 숫자가 남아있고 & answer가 빈값이 아니고 & 현재숫자가 answer에 마지막 숫자보다 크면 ⇒ 제거아니면 값을 answer에 넣음answer에서 k개 만큼 제거된 값을 반환 3. 메모문제를 잘못 읽어서 K자리수인 가장 큰 값으로 잘못 이해함작은 숫자를 제거해서 큰 숫자를 만들어야함..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/42860 2. 코드python 1def solution(name): answer = 0 size = len(name) min_move = size - 1 for idx, char in enumerate(name): answer += min(ord(char) - ord('A'), ord('Z') - ord(char) + 1) next_idx = idx + 1 while next_idx 풀이알파벳 변경 횟수 계산아래로 이동 → ord('Z') - ord(char) + 1위로 이동 → ord(char) - ord('A..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/67259 2. 코드python 1from collections import deque def solution(board): size = len(board) paths = [(-1, 0), (0, -1), (1, 0), (0, 1)] def bfs(x, y, cost, path): graph = [[0] * size for _ in range(size)] for a in range(size): for b in range(size): if board[a][b] == 1: graph[a][b] = ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/1844 2. 코드python 1from collections import dequedef solution(maps): width, height = len(maps[0]), len(maps) next_path = [(-1, 0), (1, 0), (0, -1),(0, 1)] visited = [[0] * width for _ in range(height)] visited[0][0] = 1 queue = deque() queue.append((0,0)) while queue : x, y = queue.popleft() ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/43163 2. 코드python 1from collections import dequedef solution(begin, target, words): queue = deque() queue.append([begin, 0]) visited = [0] * len(words) while queue: word, cnt = queue.popleft() if word == target: return cnt for i in range(len(words)): if not vi..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/60058 2. 코드python 1def check(string): stack = [] for s in string: if s == '(': stack.append('(') elif stack: stack.pop() else: return False return True def dfs(string): if not string: return string close = 0 for i in range(len(string)): if string[i] == '('..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/43162 2. 코드python 1def dfs(k, graph, visited): visited[k] = 1 for i in range(len(graph[k])): if visited[i] == 0 and graph[k][i] == 1: dfs(i, graph, visited)def solution(n, computers): visited = [0] * n answer = 0 for i in range(n): if visited[i] == 0: dfs(i, computers, visited) ..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/43164 2. 코드python 1from collections import defaultdictdef dfs(graph, path, visit): if path: to = path[-1] if graph[to]: path.append(graph[to].pop(0)) else: visit.append(path.pop()) dfs(graph, path, visit) return visit[::-1]def solution(tickets): graph = defaul..