목록Coding test(Python3) (178)
NIRVANA
문제 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 문제 풀이 접근법1 1) 리스트의 원소와 divisor를 나누어서 떨어진다면 answer에 해당 원소를 추가한다 2) 만약 answer의 길이가 0이라면 -1을 추가한다 3) sort()를 사용하여 오름차순으로 배열을 정렬한다 def solution(arr, divisor): answer = [] for i in arr: if i % divisor == 0: answer.append(i) if len(answer)
문제 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 문제 풀이 접근법1 1) 문자열 리스트 중 'Kim'이 저장되어 있는 리스트의 위치를 반복문을 통해 찾는다 2) 찾은 위치를 변수에 저장한 뒤, 출력한다 def solution(seoul): answer = '' find = 0 for i in range(len(seoul)): if seoul[i] == 'Kim': find = i answer = '김서방은 {}에 있다'.format(find) return answer 다른 분들 풀이 def find..
문제 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 문제 풀이 접근법1 ..
문제 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 문제 풀이 접근법1 1) 정수 a, b를 비교하여 둘 중 작은 것을 반복문의 시작값으로, 큰 것을 끝값으로 둔다 2) 반복문을 진행하면서 answer 두 수 사이의 값을 더한다 def solution(a, b): answer = 0 if a > b: for i in range(b, a+1): answer = answer + i else: for i in range(a, b+1): answer = answer + i return answer 다른 분들 풀이 def adder(a, b): if..
문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 문제 풀이 접근법1 1) n→str→list 형으로 형변환 2) map()함수를 사용하여 list의 각 원소를 int로 형변환 3) sum()를 사용하여서 리스트의 각 원소의 합을 구함 4) x를 리스트의 원소의 합(각 자릿수를 합한 값)으로 나누어서 나누어 떨어지면 True, 아니면 False를 반환 def solution(x): answer = True number = list(str(x)) number = list(map..
문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 문제 풀이 접근법1 1) 정수 n 입력 받기 2) 정수를 n을 형변환 및 각 자릿수를 list의 원소로 입력 받기 3) sort(reverse=True)를 사용하여 각 리스트 원소를 내림차순 정렬 4) join()를 사용하여 리스트를 문자열로 형변환 5) 문자열을 int형으로 형변환 def solution(n): answer = 0 arr='' number = [] for i in str(n): number.append(i) number.sort(reverse=True) arr = ''.join(number..