Python 160

[Level.0] A로 B 만들기

문제 설명: 문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항0 before와 after는 모두 소문자로 이루어져 있습니다.문제 해결def solution(before, after): return int(sorted(before) == sorted(after)) 주석: 두 문자열을 정렬(sorted)하여 문자의 구성과 개수가 일치하는지 비교하고 그 결과값(Boolean)을 정수로 변환하여 아나그램 여부를 반환한다.

[Level.0] 모스 부호(1)

문제 설명: 머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 다음과 같습니다. morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'..

[Level.0] 2차원으로 만들기

문제 설명: 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.제한사항 num_list의 길이는 n의 배 수개입니다. 0 ≤ num_list의 길이 ≤ 150 2 ≤ n 문제 해결def solution(num_list, n): answer = [] for i in range(0, len(num_list), n): ..

[Level.0] 배열의 길이를 2의 거듭제곱으로 만들기

문제 설명: 정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항1 ≤ arr의 길이 ≤ 1,0001 ≤ arr의 원소 ≤ 1,000문제 해결def solution(arr): if len(arr) & (len(arr) - 1) == 0: return arr cnt = 1 while cnt cnt return arr + [0] * (cnt - len(arr)) 주석: 현재 배열의 길이가 2의 거듭제곱인지 비트 연산(n & (n-1))으로 확인하여 조건 미충족 시 비트 시프..

[Level.0] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

문제 설명: 문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요. 제한사항5 ≤ myString ≤ 201 ≤ pat ≤ 5pat은 반드시 myString의 부분 문자열로 주어집니다.myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.문제 해결def solution(myString, pat): return myString[:myString.rfind(pat)+len(pat)] 주석: rfind()를 사용하여 가장 뒤에 위치한 패턴의 시작 인덱스를 찾고 패턴 전체를 결과에 포함하기 위해 패턴의 길이(len(pat))를 더해 슬라이싱 범위를 지정한다.

[Level.0] 1로 만들기

문제 설명: 정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 예를 들어 10이 있다면 다음과 같은 과정으로 1이 됩니다.10 / 2 = 5 (5 - 1) / 2 = 2 2 / 2 = 1위와 같이 3번의 나누기 연산으로 1이 되었습니다.정수들이 담긴 리스트 num_list가 주어질 때, num_list의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요. 제한사항 3 ≤ num_list의 길이 ≤ 15 1 ≤ num_list의 원소 ≤ 30문제 해결def solution(num_list): count = 0 for num in num_list: while num !..

[Level.0] 빈 배열에 추가, 삭제하기

문제 설명: 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요. 제한사항1 ≤ arr의 길이 = flag의 길이 ≤ 100arr의 모든 원소는 1 이상 9 이하의 정수입니다.현재 X의 길이보다 더 많은 원소를 빼는 입력은 주어지지 않습니다.문제 해결def solution(arr, flag): X = [] for ar, fla, in zip(arr, flag..

[Level.0] 중복된 문자 제거

문제 설명: 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항1 ≤ my_string ≤ 110my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.대문자와 소문자를 구분합니다.공백(" ")도 하나의 문자로 구분합니다.중복된 문자 중 가장 앞에 있는 문자를 남깁니다.문제 해결def solution(my_string): return ''.join(dict.fromkeys(my_string)) 주석: dict.fromkeys는 중복을 제거하고 순서를 유지한 채 딕셔너리 키를 생성함, 해당 생성된 dict를 접근하면 key부터 접근이 되므로 key들만 joi..

[Level.0] 합성수 찾기

문제 설명: 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항1 ≤ n ≤ 100문제 해결def solution(n): answer = 0 for i in range(4, n + 1): for j in range(2, int(i ** 0.5) + 1): if i % j == 0: answer += 1 break return answer 주석: 1과 자신을 제외한 최소 하나의 약수만 발견되면 합성수이므로 4부터 n까지의 각 수(i)에 대해 2부터 i의 제곱근(i**0.5) 사이의 ..