전체 글
-
82612. 부족한 금액 계산하기(Python, Programmers Level 1)Programmers 2022. 9. 7. 20:53
문제 설명 놀이기구의 이용료가 price원일 때, 이 금액은 매 이용 시 마다 N배가 됩니다. 예를 들어, 5회차 탑승 시 5 * price원을 내야 합니다. 고객이 이 기구를 N회 타고 싶을 때, 소지하고 있는 금액에서 더 필요한 금액이 얼마인가요? 입력 price: 1회차 놀이기구의 이용 금액 money: 소지 금액 count: 탑승하고 싶은 횟수 풀이 5원짜리 놀이기구를 4회 탄다고 가정할 때, 식은 아래와 같습니다. 5 * 1 + 5 * 2 + 5 * 3 + 5 * 4 조금 다르게 변경해보겠습니다. 5 * (1 + 2 + 3 + 4) 원래 식대로 돌려본다면 다음과 같습니다. price * (1 + 2 + ... + count) 또, (1 + 2 + ... + count)는 아래와 동일합니다. co..
-
606. Construct String from Binary Tree(Python, LeetCode Easy)LeetCode 2022. 9. 7. 20:17
문제 설명 이진 트리의 각 요소들을 전위순회하며, 각 요소를 구분할 수 있도록 괄호로 감쌉니다. 입력 root: 이진 트리의 루트 정점 풀이 이진 트리를 한 쪽씩 탐색합니다. node.val를 출력하고, 좌측 노드가 반환하는 값을 괄호로 감싸 문자열에 더합니다. 우측 노드가 반환하는 값 또한 괄호로 감싸 문자열에 더합니다. 1:1 매핑 관계에 영향을 미치지 않는 빈 괄호 쌍은 생략한다는 규칙에 따라, 좌측 노드와 우측 노드 모두 존재하지 않는 경우는 빈 괄호쌍을 생략합니다. 좌측 노드만 있고 우측 노드는 없는 경우, 좌측 노드만 표시합니다. 좌측 노드는 없고 우측 노드만 있는 경우에는 1:1 매핑 관계를 유지해야 하기에 좌측의 빈 괄호를 유지합니다. 좌측 노드와 우측 노드 모두 존재하는 경우, 둘 다 표..
-
87389. 나머지가 1이 되는 수 찾기(Python, Programmers Level 1)Programmers 2022. 9. 7. 01:10
문제 설명 n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 반환하세요! 입력 n: 자연수 풀이 n을 x로 나눈 나머지가 1이 되도록 하려면, n ** 0.5보다 작은 수거나 x는 n - 1이어야 합니다. n ** 0.5보다 작은 수여야 하는 것은 n - 1을 나누어 떨어지게 만들 수 있는 수여야 하고(약수) 쌍을 이루는 약수 중 하나는 (n - 1) ** 0.5보다 작거나 같아야 하는 부분을 참고해주세요. 코드 더보기 def solution(n): for i in range(2, int(n ** 0.5) + 1): if n % i == 1: return i return n - 1 if __name__ == '__main__': result = solution(10) print(3 == ..
-
12901. 2016년(Python, Programmers Level 1)Programmers 2022. 9. 7. 00:39
문제 설명 2016년의 월 / 일을 입력받아 무슨 요일인지 반환하세요. 입력 a: 월 b: 일 풀이 파이썬의 기본 라이브러리 중 하나인 datetime을 사용하면, 2016년의 a월 b일의 요일을 쉽게 알아낼 수 있을 것입니다. 코드 더보기 from datetime import datetime def solution(a, b): return datetime(2016, a, b).strftime('%a').upper() if __name__ == '__main__': result = solution(5, 24) print("TUE" == result, result) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 ..
-
68644. 두 개 뽑아서 더하기(Python, Programmers Level 1)Programmers 2022. 9. 7. 00:24
문제 설명 입력받은 리스트 내 두 숫자를 더해 만들 수 있는 모든 숫자를 오름차순으로 반환하세요! 입력 numbers: 정수가 들어있는 1차원 리스트 풀이 동일한 숫자를 두 번 더할 수 없으므로 다음 인덱스부터 탐색하도록 합니다. 동일한 숫자는 한 번만 출력하므로 set 자료형을 사용합니다. 오름차순으로 반환해야 하므로 가장 마지막에 정렬하여 반환합니다. 코드 더보기 def solution(numbers): answer = set() n = len(numbers) for i in range(n): for j in range(i + 1, n): answer.add(numbers[i] + numbers[j]) return sorted(answer) if __name__ == '__main__': result..
-
12982. 예산(Python, Programmers Level 1)Programmers 2022. 9. 7. 00:12
문제 설명 각 부서에서 돈을 요구합니다. 주어진 돈으로 최대한 많은 부서를 만족하세요. 입력 d: 각 부서가 요구하는 금액이 들어있는 1차원 리스트 budget: 예산 풀이 가장 적은 예산을 달라고 하는 부서를 우선 만족시키는 것이 최대한 많은 부서를 만족시키는 일일 것입니다. 여기서는 예산을 정렬하고 누적합 리스트를 만들어 정해진 예산으로 만족시킬 수 있는 부서의 수를 찾고자 하였습니다. 또한, 이진 탐색을 사용한다면, 몇 개의 부서를 만족시킬 수 있을지 빠르게 찾을 수 있을 것입니다. 코드 더보기 from bisect import bisect def solution(d, budget): prefix_sum = [0] * (len(d) + 1) for i, num in enumerate(sorted(d..
-
814. Binary Tree Pruning(Python, LeetCode Medium)LeetCode 2022. 9. 6. 23:33
문제 설명 본인과 모든 자식 노드의 값이 0인 노드를 트리에서 제거합니다. 입력 root: 이진 트리의 루트 정점 풀이 이진 트리를 한 쪽씩 탐색합니다. node의 left를 재귀적으로 탐색하여 모든 자식 노드의 값이 0이면 left 노드를 제거합니다. node의 right를 재귀적으로 탐색하여 모든 자식 노드의 값이 0이면 right 노드를 제거합니다. left와 right가 모두 None이면서 value가 0인 노드를 제거합니다. 코드 더보기 * Solution Class를 제외한 코드는 Local Test를 위한 코드입니다. from collections import deque from typing import Optional, List class TreeNode: def __init__(self,..
-
429. N-ary Tree Level Order Traversal(Python, LeetCode Medium)LeetCode 2022. 9. 6. 03:21
문제 설명 트리의 각 레벨 요소끼리 묶어 리스트를 만들어 반환합니다. 입력 root: 'Node': 트리의 루트 정점 풀이 트리를 가로(레벨별)로 순회하는 문제입니다. 루트로부터 시작하여 각 레벨을 탐색하며 결과를 종합하므로, 시작 정점인 루트를 큐에 담는 것으로 동작을 시작합니다. 다음 레벨의 노드를 담을 큐를 생성하고, 현재 큐에 담긴 노드를 순회하며 자식 노드를 다음 레벨 큐에 저장합니다. 동시에 현재 큐에 담긴 노드의 val을 결과 배열에 삽입합니다. 현재 큐가 순회를 마치면 다음 큐의 순회를 시작하기 위해 현재 큐에 대입합니다. 만약 어떤 노드도 자식 노드를 갖고 있지 않아 다음 큐가 비게 된다면, 모든 노드를 탐색한 것이므로 결과를 반환합니다. 코드 더보기 * Solution Class 이외 ..