Python 160

[Level.0] 배열 만들기(6)

문제 설명: 0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다. i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다. 만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다.stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다.위 작업을 마친 후 만들어진 stk을 return 하는 solution 함수를 완성해 주세요. 단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니..

[Level.0] 조건에 맞게 수열 변환하기(2)

문제 설명: 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.제한사항1 ≤ arr의 길이 ≤ 1,000,0001 ≤ arr의 원소의 값 ≤ 100문제 해결def solution(arr): count = 0 while True: changed..

[Level.0] 가까운 수

문제 설명: 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요. 제한사항1 ≤ array의 길이 ≤ 1001 ≤ array의 원소 ≤ 1001 ≤ n ≤ 100가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.문제 해결def solution(array, n): answer = [] for arr in array: answer.append([abs(arr-n), arr]) answer.sort() return answer[0][1]def solution(array, n): return min(array, key= lambda x: (a..

[Level.0] 진료순서 정하기

문제 설명: 외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요. 제한사항중복된 원소는 없습니다.1 ≤ emergency의 길이 ≤ 101 ≤ emergency의 원소 ≤ 100문제 해결def solution(emergency): rank_map = {val: i + 1 for i, val in enumerate(sorted(emergency, reverse=True))} return [rank_map[e] for e in emergency] 주석: 응급도 수치를 내림차순 정렬하여 각 값에 대응하는 진료 순위..

[Level.0] 2의 영역

문제 설명: 정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요. 단, arr에 2가 없는 경우 [-1]을 return 합니다.제한사항1 ≤ arr의 길이 ≤ 100,0001 ≤ arr의 원소 ≤ 10문제 해결def solution(arr): if 2 not in arr: return [-1] return arr[arr.index(2):len(arr)-arr[::-1].index(2)] 주석: index(2)를 사용하여 첫 번째 2의 시작 지점을 확보하고 배열을 반전시켜 뒤에서부터 첫 번째 2의 위치를 계산해 마지막 인덱스를 추출함. 이를 통해 모든 2를 포함하는 최소 범위의 부분 배열을..

[Level.0] 숨어있는 숫자의 덧셈(2)

문제 설명: 문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요. 제한사항1 ≤ my_string의 길이 ≤ 1,0001 ≤ my_string 안의 자연수 ≤ 1000연속된 수는 하나의 숫자로 간주합니다.000123과 같이 0이 선행하는 경우는 없습니다.문자열에 자연수가 없는 경우 0을 return 해주세요.문제 해결def solution(my_string): temp = '' answer = 0 for my in my_string: if my.isdigit(): temp += my else..

[Level.0] 세 개의 구분자

문제 설명: 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.제한사항1 ≤ myStr의 길이 ≤ 1,000,000myStr은 알파벳 소문자로 이루어진 문자열 입니다.문제 해결im..

[Level.0] 문자열 묶기

문제 설명: 문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요. 제한사항1 ≤ strArr의 길이 ≤ 100,0001 ≤ strArr의 원소의 길이 ≤ 30strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다. 문제 해결def solution(strArr): dictionary = {} for strAr in strArr: dictionary[len(strAr)] = dictionary.get(len(strAr), 0) + 1 return max(dictionary.values()) 주석: get(len(strAr), 0)은 ..

[Level.0] k의 개수

문제 설명: 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요. 제한사항1 ≤ i 0 ≤ k ≤ 9문제 해결def solution(i, j, k): return sum(str(x).count(str(k)) for x in range(i, j+1)) 주석: .count() 메서드는 문자열 타입에서만 호출 가능하므로 범위 내의 각 정수를 문자열로 변환한 뒤 찾고자 하는 숫자(k)의 등장 횟수를 계산하여 합산한다.