Programmers 10

[Programmers] 귤 고르기 - level 2

문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가..

Programmers 2023.01.31

[Programmers] 숫자 변환하기 - level 2

문제 설명 자연수 x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x에 n을 더합니다. x에 2를 곱합니다. x에 3을 곱합니다. 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요. 제한사항 1 ≤ x ≤ y ≤ 1,000,000 1 ≤ n < y 입출력 예시 x y n result 10 40 50 2 10 40 30 1 2 5 4 -1 나의 풀이 from collections import deque def solution(x, y, n): # BFS를 통해 타겟 숫자 추적 q = deque() q.append(x) ch..

Programmers 2023.01.29

[Programmers] 자연수 뒤집어 배열로 만들기 - level 1

문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한사항 n은 10,000,000,000이하인 자연수입니다. 입출력 예시 n return 12345 [5,4,3,2,1] 나의 풀이 리스트의 역순을 구할 때는 인덱스 슬라이싱을 이용하면 좀 더 pythonic한 코드를 작성할 수 있다. def solution(n): return list(map(int, str(n)))[::-1]

Programmers 2022.10.13

[Programmers] 자릿수 더하기 - level 1

문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예시 N answer 123 6 987 24 나의 풀이 123 -> "123" -> 1 + 2 + 3 파이썬은 int형 변수의 각 자리 숫자를 str 타입으로 변환하면 아주 간단하게 구할 수 있다. 자릿수를 구하고 싶다면 len(str(n))과 같이 한줄 코딩으로 가능하다. def solution(n): return sum(list(map(int, str(n))))

Programmers 2022.10.01

[Programmers] 약수의 합 - level 1

문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한사항 n은 0 이상 3000이하인 정수입니다. 입출력 예시 n return 12 28 5 6 나의 풀이 전형적인 약수를 구하는 문제이다. 약수를 구하는 문제는 항상 시간초과에 대비하여 그 수의 제곱근까지만 계산하도록 하자. def solution(n): answer = 0 for i in range(1, int(n ** 0.5) + 1): if n % i != 0: continue answer += i if i == n // i else sum([i, n // i]) return answer

Programmers 2022.09.28

[Programmers] 서울에서 김서방 찾기 - level 1

문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제한사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 입출력 예시 seoul return ["Jane", "Kim"] "김서방은 1에 있다" 나의 풀이 def solution(seoul): answer = seoul.index("Kim") return f"김서방은 {answer}에 있다"

Programmers 2022.09.26

[Programmers] 문자열 내 p와 y의 개수 - level 1

문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예시 s answer "pPoooyY" true "Pyy" false 나의 풀이 이 문제는 아주 간단하게 풀 수 있는 손에 꼽는 문제이다. 대소문자 구분없이 문자열 안에서 p와 ..

Programmers 2022.09.19

[Programmers] 나머지가 1이 되는 수 찾기 - level 1

문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤ n ≤ 1,000,000 입출력 예시 n result 10 3 12 11 나의 풀이 2~n까지 나머지가 1인 숫자를 찾으면 값을 반환하면 끝. 나머지가 1이어야 하므로 1은 검색할 필요 없다. def solution(n): for i in range(2, n): if n % i == 1: return i

Programmers 2022.09.14

[Programmers] 두 정수 사이의 합 - level 1

문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤ n ≤ 1,000,000 입출력 예시 n result 10 3 12 11 나의 풀이 2~n까지 나머지가 1인 숫자를 찾으면 값을 반환하면 끝. 나머지가 1이어야 하므로 1은 검색할 필요 없다. def solution(n): for i in range(2, n): if n % i == 1: return i

Programmers 2022.09.14