본문 바로가기

알고리즘

(10)
파이썬 이분탐색 알고리즘 Binary search #10 파이썬 이분탐색 알고리즘 Binary search #10 안녕하세요. 오늘은 파이썬 알고리즘, 이분탐색에 관해서 포스팅하도록 하겠습니다. 이분 탐색의 목적은 가지고 있는 자료를 둘로 나누어 탐색한다는 의미입니다. 하나하나 찾아보는 순차 탐색보다 원하는 자료를 훨씬 빨리 찾을 수 있는 장점이 있습니다. 우리는 일상 생활에서도 무의식 적으로 이분 탐색을 하고 있습니다. 예를 들어, 어떤 책에서 특정 페이지를 찾아보려고 할 때 가운데쯤을 펴서 페이지를 확인하겠죠? 164 페이지를 찾으려고 하는데 책을 펴보니 125 페이지면 우린 책의 뒤쪽으로 좀 더 넘길 겁니다. 그것이 바로 이분 탐색입니다. 그리고 우리가 호텔이나 아파트에서 호실을 찾을 때도 이분 탐색을 하게 됩니다. 엘리베이터가 열리고 보이는 벽에 각 방..
파이썬 병합정렬 알고리즘 merge sort #9 파이썬 병합정렬 알고리즘 merge sort #9 안녕하세요. 벌써 알고리즘 9번째 시간입니다. 여러분들의 성원에 여기까지 올 수 있었던 것 같습니다. 감사의 말씀 전합니다. 정렬과 관련해서는 세번째 시간인데요, 이번에는 재귀 호출을 사용해서 정렬 알고리즘 문제를 풀이해보도록 하겠습니다. 재귀 호출은 이번이 처음이 아닌데요.. 이미 앞선 파이썬 알고리즘 시간이 몇 차례 나왔던 내용입니다. 2020/02/05 - [DB엔지니어가 공부하는 python] - [파이썬_알고리즘] 팩토리얼 구하기 #5 feat.factorial, 재귀호출 [파이썬_알고리즘] 팩토리얼 구하기 #5 feat.factorial, 재귀호출 #[파이썬_알고리즘] 팩토리얼 구하기 #5 feat.factorial 재귀 호출 안녕하세요. 오늘..
파이썬 삽입정렬 알고리즘 Insertionsort #8 파이썬 삽입정렬 알고리즘 Insertionsort #8 안녕하세요. 파이썬으로 배우는 알고리즘~ 삽입 정렬입니다. 이번 시간의 삽입 정렬은 지난번 했던 순차 탐색과 거의 비슷합니다. https://stricky.tistory.com/171 [파이썬_알고리즘] 순차 탐색 sequential search #7 [파이썬_알고리즘] 순차 탐색 sequential search #7 안녕하세요. 오랜만에 파이썬을 이용한 알고리즘 학습 포스팅을 합니다. 이번 챕터는 매우 심플! 매우 간단! 한 알고리즘입니다. 리스트에 값이 있고, 원하는.. stricky.tistory.com 하지만 문제를 푸는 방법이 조금 다르다고 할까요? 7개의 숫자가 있습니다. 첫 번째 숫자부터 하나씩 꺼내서 다른 리스트에 삽입하면서 정렬을 합..
파이썬 순차탐색 알고리즘 sequential search #7 파이썬 순차탐색 알고리즘 sequential search #7 안녕하세요. 오랜만에 파이썬을 이용한 알고리즘 학습 포스팅을 합니다. 이번 챕터는 매우 심플! 매우 간단! 한 알고리즘입니다. 리스트에 값이 있고, 원하는 값을 첫 번째 자료부터 비교하면서 그 위치 값을 리턴해주는 알고리즘입니다. 순차 탐색이라고 하고, sequential search라고 영어로는 표현하면 되겠습니다. 바로 그럼 시작해 보겠습니다. 위 그림처럼 처음부터 18을 찾아 헤매기 시작합니다. 그렇게 번지수 2번에 도착하여 18을 찾아 해당 값을 리턴하고, 만약 끝까지 찾지 못하였다면 -1을 리턴하는 알고리즘입니다. 파이썬으로 표현해 보겠습니다. # 리스트에서 특정 숫자 위치 찾기 # 입력: 리스트 a, 찾는 값 x # 출력: 찾으면 ..
파이썬 재귀호출 알고리즘 하노이의 탑 옮기기 #6 파이썬 재귀호출 알고리즘 하노이의 탑 옮기기 #6 안녕하세요. 인터넷이나 알고리즘 등에서 굉장히 유명한 문제 중 하나인 '하노이의 탑'을 재귀 호출을 통해 풀어 보도록 하겠습니다. 위와 같은 그림 많이 보셨을 텐데요. A에 있는 1,2,3,4,5의 원반을 C로 옮기면 끝나는 문제 입니다. 간단한가요? 여기에는 규칙이 있습니다. 4가지 규칙이 있는데요. 1. 크기가 다른 원반 n개를 출발점 기둥(A)에서 도착점 기둥(C)로 전부 옮겨야 합니다. 2. 원반은 한 번에 한 개씩만 옮길 수 있습니다. 2. 원반을 옮길 때는 한 기둥의 맨 위 원반을 빼내어, 다른 기중의 맨 위로만 옮길 수 있습니다. 4. 원반을 옮기는 과정에서 큰 원반을 작은 원반 위로 올릴 수 없습니다. 이 네가지 규칙을 지켜며 문제를 풀어 ..
파이썬 재귀호출 알고리즘 팩토리얼 구하기 #5 파이썬 재귀호출 알고리즘 팩토리얼 구하기 #5 안녕하세요. 오늘은 파이썬으로 공부하는 알고리즘 5번째 시간 팩토리얼 구하기입니다. 많은 분들이 개발언어를 다루면서 꼭 한 번은 접하는 것이고요. 정보처리기사에서도 꼭 출제되는 문제이기도 합니다. 하지만, 초보자들도 계시므로, 팩토리얼의 개념에 대해서 먼저 알아보겠습니다. 1! = 1 3! = 1 * 2 * 3 = 6 5! = 1 * 2 * 3 * 4 * 5 = 120 n! = 1 * 2 * 3 * 4 * 5 .... * (n-1) * n 이런 것이 팩토리얼입니다. 단, 0! = 1이라고 약속합니다. 팩토리얼 구하는 알고리즘은 우리가 첫 시간에 다루었던 1 ~ n까지의 합을 구하는 알고리즘을 조금 수정하면 쉽게 구하실 수 있습니다. 합을 구하는 알고리즘에서 ..
파이썬 리스트 알고리즘 동명이인을 찾아라!! #4 파이썬 리스트 알고리즘 동명이인을 찾아라!! #4 안녕하세요. 파이썬으로 공부하는 알고리즘!! 오늘은 N명의 사함 이름 가운데서 같은 이름을 찾아 집합으로 만들어 보는 알고리즘을 공부하겠습니다. 예를 들어서 이름이 들어있는 리스트(전시간에 공부했었죠? ㅎㅎ) 에서 동명이인을 찾아 그 이름이 들어 있는 집합을 만드는것 입니다. 그럼 문제로 들어가기전에 집합에 대해서 한번 공부를 좀 해볼께요. 자 그림을 보면 s 라는 집합을 선언했습니다. 2번 라인에서 1을 add 했구요. 3번 라인에서 2를 add 합니다. 4번 라인에서 또 2를 add 했습니다. 결과는? 1,2 두개만 들어있네요! 네, 집합에서는 같은 수가 들어가지 않습니다. 결국 4번 라인에서 add 한 2는 집합으로 들어가지 못한게 되었네요. 자, ..
파이썬 리스트 알고리즘 최댓값 찾기 #3 파이썬 리스트 알고리즘 최댓값 찾기 #3 안녕하세요. 파이썬 알고리즘 세번째 시간입니다. 우선, 제가 하는 이 파이썬 알고리즘 포스팅은, 클래스가 목적이 아님을 알려드립니다. 제가 파이썬을 누구한테 가르칠 수준이 되지도 않거니와, 그저 저도 같이 공부를 하는 입장이라는 점 인지하시길 바랍니다. (누가 파이썬 좀 잘하게 해주세요...ㅜㅜ) 그리고, 파이썬을 이용해서 알고리즘을 공부 해보자는 것 이지, 파이썬 자체에 대해서 수려한 스킬이 있는 포스팅이 아님을 더불어 알려드립니다. 제 포스팅 중에선 파이썬 관련된것이 많은데, 데이터 분석쪽이나, 시각화 그리고 DB와 관련된 포스팅을 주로 작성하고 있으니, 관심 있으신분들은 함께 하시길 바랍니다! 자, 각설하고 시작하겠습니다. 파이썬은 리스트라는것을 이용하여 여..