문제 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로..
문제 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 풀이 분수의 덧셈을 풀어 써보면, a/b + c/d = (a*d + b*c)/b*d이다. 기약분수로 나타내려면 추가로 최대공약수를 이용해 약분해주면 된다. import math def solution(numer1, denom1, numer2, denom2): numer = denom1*numer2 + denom2*numer1 #분자 denom = denom1 * denom2 #분모 gcd = math.gcd(..
문제 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 풀이 def solution(common): # 등차수열 if common[1] - common[0] == common[-1] - common[-2]: return common[-1] + (common[1] - common[0]) # 등비수열 else: return common[-1] * (common[-1] // common[-2]) 배운 점 양수 인덱스 : 0부터 왼쪽에서 시작 음수 인덱스 : -1부터 오른쪽에서 시작
문제 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 예시 [1,2,3,3,3,4]에서 1은 1개 2는 1개 3개는 3개 4는 1개로 최빈값은 3입니다 [1,1,2,2]에서 1은 2개, 2는 2개로 최빈값이 1,2입니다. 최빈값이 여러개이므로 -1을 return합니다 [1]에는 1만 있으므로 최빈값은 1입니다. 풀이 import statistics def solution(array): multimode_num = statistics.multimode(array) print(multimode_num) statistics 라이브러리 실행 후, multimode(최빈값들의 list)를 활용해 최빈값..
문제 문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 입출력 예 #1 예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다. 입출력 예 #2 예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를..
문제 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. + 제한 조건 : 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞 쪽에 위치한다. 풀이 def solution(strings, n): return sorted(strings, key=lambda x:(x[n], x)) : sorted함수를 활용해 정렬을 했고, 정렬 기준을 주기 위해 key 파라미터를 썼다. x[n]기준으로 정렬 후, 제한 조건도 반영하기 위해 전체적으로 ..
문제 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 문제 요약 연속된 num개 수의 합이 total이 되도록 해야 한다. 풀이 def solution(num, total): avg = total // num return [i for i in range(avg-(num-1)//2, avg+(num+2)//2)] [3, 4, 5] 의 경우, total//num = 4를 기준으로 [4-1, 4, 4+1]이다. 이 리스트를 range로 나타내면 파이썬에서 range는 (시작, 끝)에서 끝-1까지의 값을 의미한다..
df.shape : 행, 열 개수 확인 df.columns : 전체 칼럼 확인 df['특정칼럼'].dtype / df.dtypes : 특정 칼럼의 데이터 타입 확인 / 전체 칼럼의 데이터 타입 확인 df.info() : 각 칼럼 별 데이터 수 & 데이터 타입 한번에 확인 df.isnull().sum() : 결측지 개수 확인 df['특정칼럼'].unique() / df['특정칼럼'].nunique() : 특정칼럼의 유일한 값 확인 / 특정칼럼의 유일한 값 개수 확인 .shape : 행, 열 개수 확인 df.shape : 행(row)의 개수 : 6574개, 열(columns)의 개수 : 13개 .columns : 전체 칼럼 출력 df.columns : df에 어떤 칼럼이 있는지 확인 .dtype / .dty..
axis = 0(index) - 행을 따라 동작 - 책을 위로 쌓아 정리하는 것과 같다. axis = 1(columns) - 열을 따라 동작 - 책을 옆으로 정리하는 것과 같다. ex) df = pd.DataFrame( {'name': ['KIM', 'LEE', 'SMITH','BROWN', 'MILLER'], 'age': [24, 32, 43, 24, np.nan], 'height': [178, 168, 171, 185, 176], 'sex': ['M', 'F', 'F', 'M', 'F']}) df """ nameageheightsex 0KIM24.0178M 1LEE32.0168F 2SMITH43.0171F 3BROWN24.0185M 4MILLERNaN176F """ drop(axis = 0) df.d..