[프로그래머스] 타겟 넘버 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 numbers의 모든 조합을 BFS으로 만들어낸 후, target과 비교하여 answer를 ++ 풀이 코드 def solution(numbers, target): leaves = [0] # 초기값 answer = 0 for num in numbers: tmp = [] for l in leaves: tmp.append(l + num) tmp.append(l - num) leav..
[프로그래머스] 게임 맵 최단거리 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 (1,1) -> (n,m)으로의 최단거리를 구하는 문제입니다. (BFS 활용) 풀이 코드 from collections import deque dy = [0, 1, 0, -1] dx = [1, 0, -1, 0] N = 0 M = 0 def is_valid_coord(y,x): return 0
[프로그래머스] 피로도 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 던전의 최대 개수가 8개이므로, 순열을 통해 모든 case를 나열하고 완전탐색으로 최대 던전 탐험 수를 구했습니다. 풀이 코드 import itertools def getCase(arr): return list(itertools.permutations(arr, len(arr))) def getResult(tup, k): for idx, t in enumerate(tup): i..
[프로그래머스] 카펫 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 우선 yellow 값을 소인수분해하여 yellow의 약수를 구합니다. (A * B 형태, A (B + 2) * 2 + A * 2 주어진 brown 값과 같은 case의 가로, 세로 크기를 리턴합니다 => [B+2, A+2] 풀이 코드 def getCase(num): case = [] for i in ra..
[프로그래머스] 소수 찾기 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 우선 종이 조각을 이어 붙여 만들 수 있는 만들 수 있는 숫자의 모든 경우의 수를 구해야 한다 -> 순열을 사용한다. 모든 경우의 수에 대하여 소수인지 아닌지 판단한다 -> 완전 탐색 풀이 코드 import itertools def is_decimal(num): if num == 1: return False for x in range(2, num): if num % x == ..
[프로그래머스] 최소직사각형 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 모든 명함을 탐색하며 최소 직사각형을 만들 수 있는 사이즈를 찾는 문제이므로 완전탐색 알고리즘으로 해결이 가능하다. 모든 명함을 width가 더 크게끔 조정한다. (물론 반대도 가능하다) width 중에서 가장 width와 height 중에서 가장 큰 height를 구하면 최소 직사각형의 사이즈를 구할 수 있다. 풀이 코드 def solution(sizes): answer =..
[프로그래머스] 연속된 부분 수열의 합 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 누적 합 행렬을 사용하여 구간합을 빠르게 계산할 수 있도록 한다. 수열은 오름차순으로 정렬되어 있고 연속된 수열의 합을 계산하기 때문에, 두 개의 포인터를 사용하여 목표 값 k 를 찾도록 한다 앞쪽 포인터는 그대로 두고 뒤쪽 포인터를 이동시켜가며 k 값에 가까워지는지 확인한다. 만약 구간 합이 k 보다 작다면 더 큰 수가 필요한 것 이기 때문에 뒤쪽 포인터를 더 뒤로 이동시..