반응형

파이썬 6

[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] enumerate로 list index, value을 튜플로 반환하기

enumerate를 설명하기 전에 random 라이브러리로 shuffle을 사용해서 리스트를 한번 섞어줍니다. 1. random 을 사용해서 list shuffle 하기 (순서를 섞어줍니다.) 소스 코드 import random as rd list1 = list(range(1,11)) print("shuffle전:",list1) # random 으로 list 순서 섞기 (shuffle) rd.shuffle(list1) print("shuffle후:",list1) 결과 shuffle전: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] shuffle후: [3, 9, 8, 4, 10, 5, 6, 1, 7, 2] 2. 위에서 생성한 list를 enumerate로 튜플로 반환해봅니다. enumerate로..

[Python] 파이썬 for else 문 사용하기

파이썬을 사용하다가 유용하게 사용할 만한 for else문을 발견했다. 사용방법은 간단하다. 1. for else문 사용방법 소스 코드 for i in range(9): #반복될것 작성 else: #반복이 온전하게 끝나면 실행 else문은 for문이 break 없이 온전하게 완료되면 작동한다. 아래 예제를 보자. 예제1) 중간에 break 문으로 빠저나오는 경우에는 else 문 실행 안됨 소스 코드 # 중간에 break 문으로 빠저나오는 경우에는 else 문 실행 안됨 for i in range(10): print(i) if i == 5: break else: print('else문 실행') 결과 0 1 2 3 4 5 예제2) 중간에 break 문으로 빠저 나오지 않고, for문이 모두 돌았을 경우 el..

[Numpy] array 생성함수 - arange, ones, zeros, empty

array를 생성하기 위한 함수들을 알아보자. 배열을 직접 입력하기에는 어려움이 있다. 다차원 배열들은 array 생성 함수로 생성하면 시간을 단축 할 수 있다. 1. arange - 인자로 배열의 크기를 입력해야한다. - 0부터 크기만큼 1씩 더하는 데이터 값들이 생성된다. 소스 코드 import numpy as np # 1.arange arange_array = np.arange(5) # 배열의 크기를 입력 print(arange_array) -결과를 보면 0부터 배열의 크기(5) 까지 +1 씩 더해서 생성하는 것을 확인 할 수 있다. print 결과 [0 1 2 3 4] 2. zeros - 인자로 shape와 dtype을 입력 할 수 있다. - 결과는 0이 들어가 있는 배열을 생성한다. 소스 코드 ..

[Numpy] ndarray 의 axis 축 개념 및 소스 코드 예제

넘파이 ndarray 의 axis 축 axis 는 쉽게 외우기 위해서는 '너의 상위 배열 몇개냐?' 라고 외우면 쉽다. 2차원 배열 같은 경우 [[1,2,3],[1,2,3]] 가장 큰 [[1,2,3],[1,2,3]] 2차 배열과 안쪽에 [1,2,3]이라는 1차 배열이 있다. 2차원 배열 안의 1차 배열 은 상위 배열이 1개 있으므로, axis =1 축이라고 보면된다. axis =1의 축이라고 했을때 1차 배열에서 add 해서 리스트를 추가하는 방향이라고 생각하면된다. 2차원 배열의 2차원 배열은 [[1,2,3],[1,2,3]] 상위 배열이 없다고 보고, axis = 0 축이라고 보면된다. (상위 배열 = axis 축) 그래서 2차원 배열에서 항목을 하나 추가하려면 1차원 배열을 추가해야한다. 그러므로, ..

반응형