본문 바로가기

Algorithm/알고리즘 입문 with python4

#4_팩토리얼 구하기 [팩토리얼 구하기] 문제 1부터 n까지 연속한 정수의 곱을 구하기 입력 3 출력 6 코드 def times_n(n): if n == 0: result = 1 else: result = 1 for i in range(1,n+1): result = result * i return result 결과 [재귀호출] 재귀호출이란 어떤 함수안에서 자기 자신을 부르것을 의미한다. 재귀 호출 프로그램이 정상적으로 작동하려면 종료 조건이 필요하다. 즉 , 특정 조건을 만족하면 더는 자기 자신을 호출하지 않고 멈추도록 설계하여한다. 그렇지 않으면 계속 반복하다 재귀 에러를 발생시키게 된다. 재귀 호출을 이용한 팩토리얼 알고리즘 1! = 1 2! = 2 x 1 3! = 3 x (2 x 1) 4! = 4 x (3 x 2 x 1.. 2019. 11. 12.
#3_동명이인 찾기 [동명이인 찾기] 문제 n명의 사람 이름 중에서 같은 이름을 찾아 집합으로 만들어 돌려주는 문제 입력 mylist = ['Sam','Tom','Mike','Sam'] 출력 {'Sam'} [집합] 집합이란 집합이란 리스트와 같이 정보를 여러개 넣어서 보관할 수 있는 파이썬의 기능이다. 다만, 집합 하나에는 같은 자료가 중복되어 들어가지 않고, 자료의 순서도 의미가 없다는 점에서 리스트와 다르다. 집합의 성질 s = set() //{} s.add(1) //{1} s.add(2) //{1,2} s.add(2) //{1,2} s //{1,2} 이미 2가 추가되었으므로, 2가 다시 추가되지 않는다. len(s) //2 {1, 2} = {2 , 1} //자료의 순서는 상관없으므로 둘은 같다 집합의 기능 len(a).. 2019. 11. 5.
#2 _ 최댓값 찾기 [최댓값 찾기] 문제 주어진 숫자 n개 중 가장 큰 숫자를 찾기 입력 mylist = [17,82,18,33,58,7,33,42] 출력 82 [리스트] 리스트란 리스트는 정보 여러 개를 하나로 묶어 저장하고 관리할 수 있는 기능이다. 리스트에서 주의할 점은 자료 위치를 1이 아닌 0부터 센다는 점이다. mylist = [17,82,18,33,58,7,33,42] 가 있는 경우 mylist[0]은 17이 되고 mylist[7]은 42가 된다. mylist[-1]은 리스트의 가장 끝에서 첫번째 자리 즉, 42가 된다. 리스트 기능 len(a) //리스트 길이를 구한다. append(x) //자료 x를 리스트의 맨 뒤에 추가한다. insert(i,x) //자료 x를 리스트의 i번 위치에 추가한다. pop(i).. 2019. 10. 31.
#1 _ 1부터 N 까지 연속한 숫자의 합 [알고리즘이란] 어떤 문제를 풀기 위한 절차나 방법을 의미한다. 문제 1부터 N 까지 연속한 합을 구하는것 입력 'N까지'에 해당하는 N 출력 N = 10 인경우 55가 출력 N = 100 인경우 5050이 출력 [1부터 N까지 연속한 합을 구하는 알고리즘] 코드 def sum_n(N): s = 0 for i in range(1,N+1): s = s + i return s 실행결과 [알고리즘 분석] 알고리즘은 문제를 푸는 절차나 방법이므로, 어떤 문제를 푸는 방법에는 한가지 이상의 방법이 존재한다. 위의 1부터 N가지 연속한 합을 구하는 문제의 경우에도 최소 두가지 이상의 방법이 존재한다. 다른 풀이법은 아래와 같다 가우스의 방법 1 2 3 4 5 6 7 8 9 10 첫번째칸의 1과 10번째 칸의10을 .. 2019. 10. 29.