Algorithm 뽀개기/프로그래머스 6

[프로그래머스][Lvl1][Java][Javascript] 자연수 뒤집어 배열로 만들기

Lvl1. 자연수 뒤집어 배열로 만들기 문제 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 [5,4,3,2,1] Java 내 코드 public int[] solution(long n) { String strN = String.valueOf(n); ArrayList arr = new ArrayList(); for(int i = strN.length() - 1 ; i > -1; i--){ arr.add(strN.charAt(i)); } return arr.stream().mapToInt(Character:..

[Python] [프로그래머스] - 스킬트리

문제설명 skill_trees 리스트에 있는 문자열의 알파벳 순서가 skill 문자열의 순서대로 이루어져있는지 판단하고 그 갯수를 리턴하는 문제입니다. 입출력 예를 봐도 알 수 있지만, 여기서 주의할 점은 skill_trees의 "BDA"는 불가능한 스킬 트리입니다. B와 D의 순서는 맞았지만 B를 위해 선행되어야 하는 C가 없기 때문입니다. 그렇지만 "CBA"는 가능합니다. skill의 문자열 "CBD"와 같이 "CBA"는 C -> B로 스킬 순서가 되므로 아무 문제가 없고 D는 없지만 순서가 중요하지 모든 skill의 문자열이 포함되어야 하는 것은 아닙니다. 접근방법 skill 문자열의 가장 마지막 문자부터 처음 문자까지 포문을 돌면서 유저의 문자열에 해당 문자열이 있는지 체크하고 now_idx를 갱..

[Python] [프로그래머스] - 구명보트

문제 설명 무인도에 갇힌 사람을 2명씩 구명보트로 구출할 수 있는데 두 명의 몸무게 합이 구명보트가 최대로 구조할 수 있는 무게 이하여야 한다는 제한이 있을 때 필요한 구명보트의 갯수를 구하는 간단한 문제입니다. 접근 방법 처음에는 간단히 몸무게 순으로 오름차순 정렬을 하고 앞사람부터 둘씩 짝지어서 구명보트 최대 무게 제한 이하의 몸무게라면 구출을 하는 방향으로 생각했습니다. 예를들어 people = [50, 50, 70, 80] 이면 50kg인 두명을 먼저 구출하고 그다음 차례로 70, 80kg인 사람을 구출하는거죠 But!! 이렇게 하면 people = [5,5,20,20,80,80] 일 경우 구명보트는 4개가 필요하지만 실제로는 3개로도 충분히 구출할 수 있습니다. 20+80을 해서 100kg를 맞..

[Python][프로그래머스] - 거리두기 확인하기

입출력 예 places result [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] 내풀이 from itertools import combinations def solution(places): answer = [] p_collect=[] for pan in places: p_collect = [] for r ..

[python][프로그래머스] - 주식가격

내 풀이 def solution(prices): answer = [] prices_len = len(prices) answer.append(0) for i in range(prices_len-2,-1,-1): for j in range(i+1,prices_len): price_down = False if prices[i] > prices[j]: #가격이 떨어짐 answer.append(j-i) price_down = True break if price_down == False : answer.append(j-i) return list(reversed(answer)) 예제 처럼 [1,2,3,2,3]이 들어왔을 때 마지막 주식가격(3)은 가격이 떨어지는 시간이 0초 이므로 일단 0을 추가해주고 시작했습니다...

[Python][프로그래머스] - 더맵게

Heap 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(complete binary tree)를 기본으로 한 자료구조입니다. 부모노드와 자식 노드 사이에 대소 관계가 성립하며(자식 노드간에는 대소관계 없음) 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰 힙을 최대 힙, 부모 노드의 키 값이 자식 노드의 키 값보다 작은 힙을 '최소 힙'이라고 합니다. 위 이미지는 최대 힙을 나타냅니다. 파이썬 heapq 모듈 인덱스 k번째 노드는 그 자식 노드 2K+1과 2K+2 보다 항상 작은 최소 힙의 형태로 정렬되게 합니다. heapq.heappush(list, item) : item을 list에 추가 heapq.heappop(list) : list에서 가장 작은 원소를 pop, 리..