알고리즘/프로그래머스

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krBFS로 풀면 되는 문제. BFS 탐색 함수를 따로 구현해서시작지점 ~ 레버까지의 최단거리, 레버 ~ 도착지점까지의 최단거리를 각각 구한 후 더해주면 된다.만약 2가지 최단거리 중 하나라도 None이 나오는 경우에는 도착이 불가능한 경우이므로 -1을 리턴해준다. 풀이 코드from collections import deque# BFS 돌리기def bfs(maps, start_x, start_y, end_x, end_y, end_val): n = len(maps) m = len(maps[0]) ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr단순 구현 문제다.특별한 알고리즘을 사용할 필요 없이 문제에서 제시된 조건을 구현하면 됨 import copy# 행렬을 query를 통해 시계방향으로 회전시킨 후의 행렬을 반환하는 함수def rotate_matrix(graph, query): # new_graph = copy.deepcopy(graph) -> 시간초과 new_graph = [i.copy() for i in graph] # 시계방향으로 회전시킨 후의 행렬 x1 = query[0] - 1 y1 = query[1..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 지난 번에 풀다가 결국 못 풀어서 풀이를 봤던 문제라 다시 풀었다.문제의 설명대로 그대로 구현하면 되는 문제.재귀라서 살짝 까다롭다고 생각할 수 있지만 문제의 요구사항을 단계별로 구현하면 그리 어렵지 않게 풀 수 있는 문제다. 풀이 코드# 문자열 u가 올바른 괄호 문자열인지 확인해주는 함수def is_right(u): # 스택 활용 stack = [] for i in range(len(u)): if u[i] == '(': stack.append(u[i]) ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 백트래킹을 풀어보려 했으나, 잘 풀리지 않아서 풀지 못했다.계속 Index out of range 오류가 나서 잡는데 시간이 너무 오래걸림 ㅠㅠ 풀이from itertools import permutationsimport redef solution(expression): answer = 0 expression = re.split('([*+-])', expression) # *, +, - 로 나눈 리스트 operators = list(permutations(['+', '-', '*'])) ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 백트래킹으로 푸는 문제.  첫번째 풀이 - 시간 초과from itertools import permutationsdef solution(n, k): answer = [] candidate_list = list(permutations(range(1, n+1))) return candidate_list[k - 1] 이 문제에서 n의 범위가 20 이하인 자연수이므로 만약 permutations를 통해 구하면 최대 20!만큼의 후보들을 리스트에 저장해야 한다.그러므로 위 풀이는 불가능하다...
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 전형적인 탐색 문제.DFS/BFS를 활용해서 풀 수 있다. DFS 풀이 코드import syssys.setrecursionlimit(int(1e9)) dx = [-1, 1, 0, 0]dy = [0, 0, 1, -1]foods_sum = 0def dfs(x, y, visited, maps): global foods_sum n = len(maps) m = len(maps[0]) visited[x][y] = True # 방문 처리 foods_sum += int(maps[x][y]..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 테스트케이스 파악이 어려운 빡센 구현 문제다.나도 히든테케 파악을 못해서 계속 40점, 50점, 60점 이렇게 나오다가결국 풀이에 있는 테케를 보고 풀었다. 풀이 코드# 네오가 기억한 멜로디 m이 방송된 곡 melody에 있으면 true, 없으면 false를 리턴하는 함수# C와 C#을 구분해야 함def is_m_in_melody(m, melody): melody = "".join(melody) if m in melody: temp = melody.replace(m, '1') ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 전형적인 최단 거리 문제.다익스트라 알고리즘을 활용해서 풀었다. 풀이 코드import heapqINF = int(1e9)# 다익스트라(O(ElogV))def dijkstra(start, N, road): q = [] distance = [INF] * (N+1) graph = [[] for _ in range(N+1)] # 데이터 입력 for r in road: a, b, c = r[0], r[1], r[2] graph[a].append((b, c)) ..
https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  약수와 배수 성질을 이용해서 푸는 문제. 첫 풀이# num의 약수가 담긴 set을 반환하는 함수def get_divisor(num): divisor = set() for i in range(1, int(num ** 0.5) + 1): if num % i == 0: divisor.add(i) divisor.add(num // i) ..
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr dictionary를 사용해서 풀었다. 내 풀이from itertools import combinationsdef solution(orders, course): answer = [] order_dict = dict() candidate_set = set() # 1단계: candidate_set 집합에 가능한 코스요리 메뉴 구성을 저장 for order in orders: for cnt in course: cur_order_list = lis..
happenundo
'알고리즘/프로그래머스' 카테고리의 글 목록 (2 Page)