목록Python (280)
jyamethyst21 님의 블로그
문제: 길이가 주어질 때, 길이에 맞게 수박수박... 을 출력하면 된다.n은 곧 한 글자를 의미하기 때문에 n이 2이면 '수박'을 출력하면 된다. 풀이:def solution(N): n1 = '수박' if N % 2 == 0: result = (N // 2) * n1 elif N == 1: result = n1[0] elif N % 2 != 0: result = (N // 2) * n1 + n1[0] return resultn1에 출력할 문자열 전체인 수박을 대입하고, 입력받은 N의 값이 홀수인지, 1인지, 짝수인지를 파악해서 조건을 만들었다.먼저 0으로 나눈 나머지가 0인 경우(짝수인 경우) 입력받은 N의 값을 2로 나눈 몫만큼 수박을 출..
문제: 입력 받은 배열에서 가장 작은 값을 지우고 리턴해주는 문제이다.단, 값이 하나일 경우에는 -1을 리턴하면 된다. 풀이:def solution(arr): if len(arr) == 1: return -1 else: arr_min = min(arr) arr.remove(arr_min) return arr먼저 배열의 길이를 구한 다음 1인 경우, 값을 지웠을 때 빈 배열이 되기 때문에 -1을 리턴하고, 그렇지 않은 경우에는 배열에서 가장 작은 수를 min 함수를 활용해서 구한 뒤, 해당 수를 remove를 활용하여 지운다.이때 주의해야할 점은 remove 함수는 리턴값이 없는 함수이므로 'a = arr.remove(arr_min)' 과 같이 ..
문제: 배열을 입력받고, 해당 배열에 'Kim'이 위치하는 곳을 찾아서 '김서방은 x에 있다' 형태로 출력해주는 함수를 작성하는 문제이다. 풀이:def solution(seoul): for i in range(len(seoul)): if seoul[i] == 'Kim': return f'김서방은 {i}에 있다'반복문을 통해 배열 내의 데이터를 하나씩 확인하면서, 'Kim'에 해당하면 출력 형식에 맞게 바로 출력해주면 된다.주의할 점은 return 시 print를 사용하게 되면 None 객체를 반환해주어서 비쥬얼 스튜디오 코드에서는 정상적으로 잘 작동이 되더라도 프로그래머스에선 틀리다고 한다.그래서 상기와 같이 풀어주어야 한다.
문제: 단어를 입력받고, 그 단어의 가운데 글자를 반환하는 함수를 작성하면 된다.단어의 길이가 짝수면 가운데 두글자를 반환해야 한다. 풀이:def solution(s): string_len = len(s) if string_len % 2 != 0: result = s[int(string_len/2)] else: result = s[int(string_len/2)-1:int(string_len/2)+1] return result먼저 문자열의 길이를 구한 뒤 string_len에 대입하였다. 문자열의 길이를 알아야 가운데 글자 한 개만 추출할지, 두 글자를 추출할지 결정할 수 있기 때문이다.이후 문자열의 길이가 2로 나눠 떨어지지 않는다면 즉, 홀수라면 문자열의..
문제: 배열을 입력받고, 해당 배열에 존재하는 수의 평균값을 구하는 문제이다. 풀이:def solution(arr): return sum(arr) / len(arr)고작 두 줄의 함수로 구현이 가능한 문제이다.sum 함수를 활용해서 배열에 존재하는 수의 합계를 구하고, len 함수로 배열의 길이값을 구한 뒤 이로 나누면 된다.평균은 (총 합계/수)이기 때문에 상기 코딩이 적용된다.
문제: 전화번호를 입력받고, 끝자리 네 개를 제외한 나머지 번호는 '*', 끝 네자리는 그대로 출력하는 문제이다. 풀이:def solution(phone_number): result = phone_number[-4:] phone_number_len = len(phone_number) answer = (phone_number_len-4) * "*" + result return answerresult에 입력받은 전화번호의 끝자리 숫자 네 개를 담고(인덱싱에 -를 붙이면 끝부터 시작이라는 의미, 상기 코드에서는 끝자리부터 네 개 추출), phone_number_len에는 입력받은 전화번호의 길이를 담는다.그리고 answer 변수에, 전화번호 전체 길이의 4개를 뺀 값만큼 *을 곱해서 출력..
문제: 두 개의 주사위를 굴렸을 때 나온 결과를 바탕으로 점수를 계산해서 출력하는 문제이다.두 개의 주사위 모두 홀수라면 각 수의 제곱을 더한 값을, 하나만 홀수이면 두 수를 더한 다음 2를 곱한 수를, 둘 다 홀수가 아니라면 절댓값 기준 하나의 주사위에서 다른 하나의 주사위의 수를 뺀 수를 출력하면 된다. 풀이:def solution(a, b): score = 0 if a % 2 != 0 and b % 2 != 0: score += a**2 + b**2 elif a % 2 != 0 or b % 2 != 0: score += 2 * (a + b) else: score += abs(a - b) return score두 개의 수를..
문제: 입력받은 배열에서 가장 많이 나오는 값을 찾아 출력하면 되는데, 만약 최빈값이 여러 개라면 -1을 리턴하면 된다. 풀이:def solution(array): count = {} for num in array: if num in count: count[num] += 1 else: count[num] = 1 max_count = max(count.values()) mode = [] for k, v in count.items(): if v == max_count: mode.append(k) if len(mode) > 1: return -1 else: ..
문제: 정수 N을 입력받고, 1부터 해당 수 이하까지 숫자 중 홀수만 전부 출력하면 되는 문제이다. 풀이:def solution(n): answer = [] for i in range(1, n+1): if i % 2 != 0: answer.append(i) return answer출력할 리스트인 answer를 선언하고 반복문을 활용해서 1부터 입력받은 수까지 돈다. range 함수 특성상 종료 조건은 -1까지 돌기 때문에 +1 처리를 해주어야 입력받은 값 이하까지 반복문 처리를 할 수 있다.이후 해당 값을 2로 나눈 나머지의 값이 0이 아닌 수, 즉 i가 홀수라면 미리 선언한 answer 리스트에 추가하고 해당 리스트를 리턴해주면 된다.
문제: 입력받은 값을 두 배로 늘려서 리턴하는 문제이다. 풀이:def solution(numbers): new_numbers = [] for i in numbers: new_numbers.append(i*2) return new_numbers새로운 리스트를 선언하고 입력받은 매개변수의 각 자리를 확인하면서 2배로 늘린 값을 append(리스트에 값 추가)해주면 새로운 리스트에 2배로 늘려진 값이 들어갈 것이다.최종적으로 해당 리스트를 출력하면 문제를 풀 수 있다.
