배또가또 2024. 1. 9. 23:46
  • 오늘 한 것
    1. 알고리즘 특강 2일차 수강 
    2. Python 알고리즘 코드 카타
    3. 재귀 쿼리 관련 학습

알고리즘 특강 

 

알고리즘 2일차 강의는 1일차 때 미처 다 끝내지못한 자료구조(트리, 그래프) 강의를 마저 듣고 

여러 알고리즘에 대해서 간단히 소개하는 방식으로 진행되었다. 

 

완전 탐색, 이분 탐색, 그리디 알고리즘 등에 대해서 간단히 배웠고 

재귀함수에 대해서만 조금 자세히 다루었다. 

 

팩토리얼을 반복문으로 먼저 구현해본 뒤 함수를 재귀 호출하는 형태로 구현하는 코드를 작성하는 실습을 진행했다.

코드는 아래와 같다. 

# 반복문을 통한 팩토리얼 구현
def factorial(n) : 
    answer = 1
    for i in range(1, n+1) : 
        answer*=i
    return answer
    
# 함수 재귀호출을 통한 팩토리얼 구현    
def factorial_recursive(n) : 
    if n<=1 : 
        return 1
    return n * factorial_recursive(n-1)

 

위의 재귀호출로 구현한 팩토리얼을 실행하면 아래처럼 실행이된다. 따라서  n이 5라면

5*4*3*2*1의 형태로 실행이 되며 120을 리턴하게 된다.

출처 : 내배캠 알고리즘 강의자료


재귀 알고리즘은 파이썬 프로그래밍 외에 SQL 쿼리를 작성할 때도 이용되기 때문에 이를 중점으로 배웠다.

 

예전에 재귀쿼리를 이용해 풀었던 코딩테스트 문제가 있었는데 문제만 풀고 정리하지를 않았어서 블로그에 작성하면서

SQL의 재귀쿼리에 대해서 다시 복습해보았고 복습한 내용 또한 블로그에 잘 정리하였다.

 

예전에 풀었던 문제는 프로그래머스의 입양시각 구하기(2)이다.

https://jinhyunbae.tistory.com/109

 

<프로그래머스> 입양 시각 구하기(2)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이

jinhyunbae.tistory.com

 

재귀 쿼리를 처음 사용해보았던 문제였는데 처음 다른 사람의 코드를 보고 풀었을 때는 개념이 잘 이해가 되지 않는 느낌이  있었는데 이번에 다시 학습해보면서 좀 더 잘 이해할 수 있었다.

 

https://jinhyunbae.tistory.com/107

 

<SQL : MySQL> RECURSIVE(재귀 쿼리)

SQL을 하다보면 연속적인 숫자 데이터를 생성할 필요가 있을 수 있다. 이 때 프로그래밍이라면 반복문을 돌려서 쉽게 해결할 수 있는데 SQL에는 해당하는 기능이 없을까 SQL에서는 재귀 쿼리를 이

jinhyunbae.tistory.com

https://jinhyunbae.tistory.com/108

 

<SQL : Oralce> CONNECT BY LEVEL (with DUAL)

지난 글에서는 MySQL에서 재귀쿼리를 통해 데이터를 반복문처럼 생성하는 방법에 대해서 알아보았다. MySQL 재귀쿼리 https://jinhyunbae.tistory.com/107 RECURSIVE(재귀 쿼리) SQL을 하다보면 연속적인 숫자 데

jinhyunbae.tistory.com

 

SQL 재귀 쿼리가 활용도는 높으나 쿼리 자체가 다른 쿼리문에 비해서 직관적이지 않아서 

제대로 공부해서 자주 응용해버릇 해야 잘 쓸 수 있을 것 같다.