반응형

프로그래밍언어/자료구조 및 알고리즘 3

[Python] 재귀 함수를 이용해 알고리즘 문제 풀기 - 프로그래머스 문제

문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다 문..

[Python] 병합 정렬 쉽게 이해하기

정렬의 종류는 다양하다. 그중에 병합 정렬을 쉽게 이해하기 위한 글을 작성해봤다. 1. 병합 정렬 병합 정렬은 Big O 시간 복잡도는 O(n log n) 의 복잡도가 나온다. 아래 사진과 같은 방법으로 소팅한다. (사진 출처 : '모두의 알고리즘 with 파이썬' 책) '모두의 알고리즘 with 파이썬' 책에 그림으로 소팅 과정을 쉽게 설명되어있다. 1. 리스트를 절반으로 나눕니다. 2. 1에서 나눈 리스트를 정렬합니다. (이곳에서 재귀함수 사용) 3. 각각의 리스트에서 가장 앞의 인원을 비교해서 작은 인원을 정렬합니다. (계속 반복) 2. 병합 정렬 소스코드 구현 소스 코드로 구현하면 아래와 같습니다. 혹시 재귀함수에 대해서 모르시는 분을 위해서 링크를 걸어두겠습니다. ([Python] 재귀함수 간단..

[Python] 재귀함수 간단예제 - 팩토리얼 구현

재귀함수는 함수에서 자신을 다시 호출하면서 반복하는 함수를 말합니다. 재귀함수를 사용하지 않고 팩토리얼을 구현해보고, 재귀함수를 사용해서 팩토리얼을 구현해보도록 합니다. 재귀함수의 일반적인 형태는 아래와 같습니다. 종료 조건을 충분히 작은 조건을 넣어서 종료가 되도록 구현해한다. (종료 조건이 없으면 무한루프) 재귀함수 일반적인 형태 def func(입력 값): if 입력 값이 충분히 작으면 : # 종료 조건 return 결과값 func(입력 값 보다 하나 작은 값) return 결과값 1. 재귀함수 없이 팩토리얼 구현 팩토리얼은 5! 이라고 하면 1x2x3x4x5 = 120 입니다. 소스 코드 # 1.재귀함수 사용 없는 팩토리얼 def fact(n): f = 1 for i in range(1,n+1):..

반응형