Programmers
-
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..
-
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..
-
77884. 3진법 뒤집기(Python, Programmers Level 1)Programmers 2022. 9. 6. 01:42
문제 설명 입력받은 10진수를 3진수로 변환 후 뒤집고 다시 10진수로 바꾸어 반환합니다. 입력 n: 10진수 풀이 10진수를 3진수로 변환하는 부분을 만드는 것이 가장 중요합니다. 몫이 없을 때 까지 10진수를 3진수로 계속 나눠가며 발생한 나머지를 역순으로 이어붙이면 3진수가 됩니다. 그렇다면 역순이 아닌 원래의 순서로 이어붙이면? 코드 더보기 def reversed_base_convert(num, base): share, remainder = divmod(num, base) if share == 0: return str(remainder) else: return str(remainder) + reversed_base_convert(share, base) def solution(n): reversed..
-
77884. 약수의 개수와 덧셈(Python, Programmers Level 1)Programmers 2022. 9. 6. 01:27
문제 설명 left ~ right까지의 수 중 약수의 개수가 짝수인 것은 더하고 홀수인 것은 뺀 수를 반환합니다. 입력 left: 자연수 right: 자연수 풀이 right가 범위에 포함되어야 하는 것에 주의하면서 풀어야 합니다. 약수는 쌍을 지을 수 있습니다. 예를 들어 15는 1과 15, 3과 5입니다. 예로 들어본 15는 짝수개의 약수를 갖고 있습니다. 홀수개의 약수를 갖고 있는 것은 동일한 두 수를 곱하여 해당 숫자가 나오는 경우입니다. 따라서 root(i)가 정수인지 확인한다면 약수의 개수가 짝수인지 쉽게 구분할 수 있습니다. 코드 더보기 def solution(left, right): answer = 0 for i in range(left, right + 1): if int(i ** 0.5) ..