본문 바로가기

프로그래머스7

프로그래머스_정수 삼각형 https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 접근법 문제는 Level 0 위치, 즉 숫자 피라미드의 맨 꼭대기부터 마지막 바닥 Level까지 내려갈 때 지나간 숫자들의 최대합을 구하여야 한다. 상위 Level에서 하위 Level로 내려갈 때는 일정한 규칙이 있다. - 피라미드 형태에서 상위 Level의 왼쪽 아래, 오른쪽 아래, 두 위치로만 내려갈 수 있다. 이 조건이 이 문제를 동적 계획법(Dynamic Programming)으로 간단히 풀 수 있도록 해주었다. 코드 설명 def.. 2021. 9. 17.
프로그래머스_N으로 표현 https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 접근법 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 구하는 문제이다. 즉 5를 이용해 10을 구하는 최소의 5 사용법은 (5+5) : 2개, 60을 구하는 방법은 (55 + 5) : 3개 이다. N이 필요한 최소 개수가 9 이상이라면 -1을 return하므로 8개 까지 필요한 경우만 생각하면 된다. 내가 생각한 문제 접근법을 설명하면 *N이 n개 사용될 때 구할 수 있는 값들의 종류 - N이 1개일 때 경우의 수 +,-,*,/ N이 n-1개일 때 경우의 수 - N이 2개일 .. 2021. 9. 16.
프로그래머스_여행경로 https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 접근법 티켓이 주어질 때, 주어진 티켓을 모두 사용하여 모든 공항에 방문하여야 한다. 문제를 보자마자 dfs(깊이 우선 탐색)으로 풀어야겠다는 생각이 들었다. 다른 풀이방법도 많지만 전형적인 dfs로 풀어보았다. from collections import defaultdict def solution(tickets): ticket.. 2021. 9. 13.
프로그래머스_카펫 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 접근법 카펫의 테두리 : 갈색(brown), 카펫 테두리를 제외한 내부 : 노란색(yellow) 갈색과 노란색의 값이 주어질 때 전체 카펫의 가로, 세로 길이를 구하는 문제이다. 완전탐색으로 풀 수 있는 문제지만 좀 더 수학적으로 풀어봤다. def set_divisor(num) : divisor = [] for i in range(1,num+1) : if n.. 2021. 9. 13.
프로그래머스_단어변환 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 이 문제는 DFS, BFS 두 알고리즘이 가장 먼저 떠올랐지만 최단거리가 문제의 주요 핵심인 만큼 Dijkstra(다익스트라)를 써야겠다고 생각 들었다. 물론 DFS, BFS로 구현이 불가능한 것은 아니지만 다익스트라 구현이 더 끌렸다..ㅎ ◎ Code import numpy as np def solution(begin.. 2021. 9. 10.
프로그래머스_네트워크 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr ◎ Code from collections import deque def solution(n, computers): check_network = [False for _ in range(n)] answer = 0 def bfs(index) : queue = deque() queue.append(index) while queue : index = queue.p.. 2021. 9. 10.
프로그래머스_타겟넘버 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr ◎ Code def solution(numbers, target): answer = 0 def back(result, point) : if point == len(numbers) : if result == target : nonlocal answer answer += 1 return back(result + .. 2021. 9. 9.