deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 계산기
  • 팩토리얼
  • 코딩
  • 군수열
  • 통계
  • 기초수학
  • matplotlib
  • 파이썬
  • SQL
  • 데이터분석가
  • 데이터엔지니어
  • 소인수분해
  • 모듈
  • 프로그래밍
  • 함수
  • 부트캠프
  • pandas
  • 등비수열
  • 마이데이터
  • 릿코드
  • 제로베이스
  • 미니콘다
  • 계차수열
  • BMI
  • 최소공배수
  • 등차수열
  • 데이터사이언티스트
  • 빅데이터
  • 네카라쿠배
  • 데이터분석

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

스터디

[스터디 후기] 0. 아이스 브레이킹

2022. 6. 12. 18:40

1. 스터디 범위

1) 범위

블로그 리뷰, 백준 문제 재귀 단계

 

2) 선정 이유

재귀 함수는 효율적이지만, 사용이 익숙하지 않다면 쓰기 어렵다. 따라서 재귀함수에 좀더 익숙해지기 위해 첫 스터디 주제로 선택했다.

 

 

2. 스터디 내용

1) 팩토리얼

 

def factorial(n):
    result = 1
    if n > 0:
        result = n * factorial(n-1)
    return result

print(factorial(3))

 

2) 피보나치

def fibo(n):
    if n <= 1:
        return n
    return fibo(n-1) + fibo(n-2)

print(fibo(20))

 

3) 재귀함수가 뭔가요?

여러번 출력되는 부분과 한번만 출력되는 부분을 구분하여 재귀함수에 담아줬다 조건문으로  "재귀함수는 자기 자신을 호출하는 함수라네", "라고 답변하였지."를 한번만 출력하도록 묶어주고 나머지는 재귀함수로 호출하였다.

def caUniv(m):
    print("_" * (4 * (n - m)) + '"재귀함수가 뭔가요?"')

    if not m:
        print("_" * (4 * (n - m)) + '"재귀함수는 자기 자신을 호출하는 함수라네"')
        print("_" * (4 * (n - m)) + "라고 답변하였지.")
        return

    print("_" * (4 * (n - m)) + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
    print("_" * (4 * (n - m)) + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.")
    print("_" * (4 * (n - m)) + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')

    caUniv(m - 1)

    print("_" * (4 * (n - m)) + "라고 답변하였지.")

n = 1
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")

caUniv(n)

 

4) 별찍기

이해가 잘 되지 않는 부분이었는데, 조원 분께서 손수 그림까지 그려서 설명을 해주셨다.

def draw_star(n):
  global Map

  if n == 3:
    Map[0][:3] = Map[2][:3] = [1] * 3
    Map[1][:3] = [1, 0, 1]
    return

  a = n // 3

  draw_star(n // 3)

  for i in range(3):
    for j in range(3):
      if i == 1 and j == 1:
        continue
      for k in range(a):
        Map[a * i + k][a * j:a * (j + 1)] = Map[k][:a]  # 핵심 아이디어

N = 81

# 메인 데이터 선언
Map = [[0 for i in range(N)] for i in range(N)
draw_star(N)

for i in Map:
  for j in i:
    if j:
      print('*', end='')
    else:
      print(' ', end='')
  print()

 

5) 하노이의 탑

수업 때 배운 내용이기에 큰 어려움은 없었다.

def hanoi_tower(n, start, end):
    if n == 1:
        print(start, end)
        return

    hanoi_tower(n - 1, start, 6 - start - end)  # 1단계
    print(start, end)  # 2단계
    hanoi_tower(n - 1, 6 - start - end, end)  # 3단계


n = 4
print(2 ** n - 1)  #하노이 탑 공식

hanoi_tower(n, 1, 3)
 

재귀 단계

피보나치 수 역시 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다.

www.acmicpc.net


 


3. 느낀점

신혼여행 중에 참여해서 준비도 많이 못 했고 설상가상으로 미팅 중에 이어폰 마이크도 고장났다. 많이 준비해오신 팀원들에게 굉장히 민폐였고 도움이 안되었던 것 같다. 스터디분들은 많은 준비를 해오셨다. 단순히 코드를 공유하는 것뿐만 아니라, 자신이 이해하기 어려웠던 부분을 발표자료로 만들어와서 공유하는 열정을 보며 내 자신을 되돌아보고 많이 반성을 했다. 다음에는 더 열심히 준비해야겠다고 마음 먹었다.

 

'스터디' 카테고리의 다른 글

[스터디 후기] 6주차. 백준 문제 및 조별 과제 토의  (0) 2022.07.19
[스터디 후기] 5주차. 백준 문제 및 조별 과제 토의  (0) 2022.07.11
[스터디 후기] 4주차. 백준 문제 및 조별 과제 토의  (0) 2022.07.04
[스터디 후기] 3주차. 백준 문제 및 조별 과제 토의  (0) 2022.06.27
[스터디 후기] 1. 코딩테스트_1 & EDA 과제_2  (0) 2022.06.19
    '스터디' 카테고리의 다른 글
    • [스터디 후기] 5주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 4주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 3주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 1. 코딩테스트_1 & EDA 과제_2
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바