-
파이썬 알고리즘 초급 문제Python 2024. 7. 12. 23:21
codekata 9번 문제부터
Q. 짝수의 합(정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성하시오)
def solution(n): n = int(n) even_sum = 0 for i in range(1, n+1): # range함수는 마지막 값 포함X if i % 2 == 0: even_sum += i return even_sum
Q. 배열의 평균값 ( 정수 배열 numbers가 매개변수로 주어짐. numbers의 원소의 평균값을 return하도록 solution 함수 완성하기)
def solution(numbers): average_num = sum(numbers)/len(numbers) return average_num
다 더한 걸 numbers의 길이로 나눠주면 평균을 구할 수 있음
Q. 짝수와 홀수 (정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수 solution을 완성하기)
def solution(num): num = int(num) if num % 2 == 0 : return "Even" else: return "Odd"
2로 나눴을 때 나머지가 0이면 짝수
강의 stack 괄호 문제 보다가 코드카타 초반 문제 푸니까.. 마음의 조금 진정됐다..
Q. 평균 구하기 (정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution 완성하기)
def solution(arr): answer = sum(arr)/len(arr) return answer
Q. 자릿수 더하기
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만드시오.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됨
def solution(n): n_str = str(n) sum_digit = 0 for digit in n_str : digit_int = int(digit) sum_digit += digit_int return sum_digit
처음엔 문자열로 바꾼 n에 for문 돌려서 자릿수를 나누고 다시 int로 바꿔서 더했는데..
map을 사용하면 훨씬 간단해질것같았다.
def solution(n): n_str = str(n) return sum(map(int, n_str))
훨씬 간단해졌고, 테스트 결과도 통과(정답)
Q. 약수의 합 (정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성하기)
약수가 뭐더라 잠깐 생각했다...; 초등학교 수학도 까먹은건가..
나같은 사람을 위해..
약수: 어떤 자연수를 나누어떨어지게 하는 수. 어떤 수의 약수에는 1과 자기 자신이 항상 포함.
n을 i로(i는 1부터 n까지의 수) 나눴을 때 나머지가 0인 값을 찾아서 다 더해주면 되니까
def solution(n): sum_divisors = 0 for i in range(1,n+1): if n % i == 0: sum_divisors += i return sum_divisors
Q. 나머지가 1이 되는 수 찾기 (자연수 n이 매개변수로 주어지고, n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수 완성하기)
말그대로 n을 x로 나눴을 때 나머지가 1인 수 찾으면 되고, x 중 가장 작은 자연수를 구하라고 했으니까 처음 구해지는 값을 바로 리턴해주면 된다.
def solution(n): for x in range(1,n+1): if n % x == 1: return x
Q. x만큼 간격이 있는 n개의 숫자 (정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴)
만약 n이 3이면 [x, x+x, x+x+x]
리스트 개수는 n이니까 [x, 2x, 3x, .... n*x] 이런 리스트를 구하면 된다.
def solution(x, n): xn = [] for i in range(1,n+1): xn.append(x*i) return xn
Q. 자연수 뒤집어 배열로 만들기 (자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴)
말 그대로 자연수 n을 str(문자열)로 바꾼 뒤 > reversed로 뒤집고 > map으로 각 문자열 하나하나를 int(정수)로 바꿔준 후 > 리스트로 만들어주면 된다.
def solution(n): return list(map(int,reversed(str(n)))) print(solution(123)) print(solution(54321))
확인해보면
[3, 2, 1] [1, 2, 3, 4, 5]
잘 나온다.
프로그래머스에서도 정답
다른 사람의 풀이 보기 를 클릭해서 보면 다른 사람들은 어떻게 풀었는지, 더 효율적으로 푸는 방법은 뭐가 있는지, 한줄코딩으로는 어떻게 쓸 수 있는지 등등에 대해 배울 수 있다.
'Python' 카테고리의 다른 글
파이썬 알고리즘 코딩 문제 풀기(programmers) (0) 2024.07.16 파이썬 자료구조 알고리즘, programmers 코딩 기초 트레이닝 (0) 2024.07.15 [파이썬, 자료구조 알고리즘] Stack (2) 2024.07.12 파이썬, 알고리즘... 뭔말이야.. (0) 2024.07.11 파이썬, flask, SQLAlchemy, SQLite, jsonify로 가위 바위 보 게임 코드 웹 페이지에 올리기 (0) 2024.07.10