본문 바로가기
IT_프로그래밍

[python] 파이썬 독학_"모두의 알고리즘 with 파이썬"_결국 알고리즘_1

by 째까 2022. 1. 10.
반응형

//
안녕하세요? 째까입니다.
여러분 혹시 파이썬 공부하실 계획이세요? 파이썬은 사실 C+보다 접근성이 쉬워서 많은 분들께서 독학이나 인강으로 시작하시는데요.
저는 직장에서 다른 언어를 아주 조금 하다가 너무 어려워서 내팽겨치고 파이썬 혼자 공부하고 적용하기위해 시작했습니다. 결국 목마른 자가 우물을 판다 라는 말이 있듯 저도 필요해서 파이썬을 시작했습니다.

잠시 생각해보세요. 여러분 파이썬은 결국 뭐다? 언어에요. 우리가 영어나 중국어 등 제 2외국어를 공부할 때를 생각해보세요. 영어가 있구나, 중국어가 있구나. 하고 끝나는 게 아니라 어디에다가 써먹기 위해 공부하시잖아요? 그러기 위해서는 어떻게 공부하시나요? 무엇이 명사고 무엇이 동사고, 문장은 어떻게 만드는 거고, 어떻게 발음하고를 배우잖아요. 결국 컴퓨터 언어도 똑같아요!! 절대 어렵지 않아요.
제가 말씀드리고싶은 건 저도 진짜 프로그래밍 왕왕초보인데 너무 어렵게 생각하지 말라달라는 것과 파이썬이 뭔지만 알아서는 안된다는 거에요. 파이썬은 그저 언어일 뿐 파이썬을 이용해서 문제를 풀든, 업무를 효율화든 해야한다는 것이에요. 제가 아주 조금 경험해보았을 때 파이썬의 기능따로 업무나 과제에 적용 따로로 하시면 과정이 두배더라고요.
그래서 저의 파이썬 독학은 "알고리즘"을 공부하면서 파이썬도 같이 배우는 과정으로 할거랍니다.
따라하는 책은 길벗 출판사의 "모두의 알고리즘 with 파이썬"이에요.

길벗 출판사 책이 아기자기하고 그림으로 설명하는 부분이 많아서 이 책으로 결정했습니다!(홍보 아닙니다. 홍보 받을 레벨이 아닙니다.)
만약 종이책이 없으셔도 무방합니다. 길벗 출판사에서는 더북(https://thebook.io/)사이트를 통해 책을 열람할 수 있도록 해주더라고요. 이 사이트 추천합니다! 파이썬뿐만아니라 다른 프로그래밍 언어책도 열람할 수 있어요!

저는 "모두의 알고리즘 with 파이썬"책을 읽은 후 블로그에 포스팅하며 정리하는 식으로 파이썬을 공부하려고해요.


글 여기서부터 보셔도 무방합니다.
자, 각설하고 시작해볼까요?
알고리즘은 어떤 문제를 풀기위한 절차나 방법입니다.
즉 문제라는 입력이 들어오면 그 문제를 풀기위해 알고리즘을 만든 후 답이라는 출력을 내는 것이에요.
사람은 문제를 확인하면 이해한 후 비슷한 문제가 나와도 해결할 수 있지만, 컴퓨터는 주어진 명령에만 충실히 따르는 "기계"이므로 알고리즘이 구체적이고 명확해야한답니다. 이제부터 문제를 해결하는 알고리즘을 통해 파이썬 공부를 시작하죠.


문제 1. 1부터 n까지의 합 구하기

즉, 이번 문제는 n이라는 수를 사용자가 입력하면, 1부터 n까지 덧셈한 정답 결과를 "출력"하는 것까지가 알고리즘이 되겠네요. 항상 알고리즘은 구체적이어야 합니다. 머리속에서의 계산 과정을 글로 적으면 아래와 같습니다.

알고리즘
1. 기록 변수 S 설정 후 0으로 초기화
2. n 입력 시 n만큼 반복해야하므로 반복 변수 i 설정 후 n까지 +1시키면서 반복
3. +1 시키면서 나온 결과를 S에 저장
4. 반복 종료 시 S를 출력(return)

이 과정을 파이썬에 표출해볼까요?(할수있다, 우리는 할 수 있다!)

def sum_n(n): ## def는 함수입니다. 저장해놓고 여러모로 쓸모가 있어요! s = 0 #저장할 변수 초기화 for i in range(1, n+1) ## n을 넣으면 사실 n-1까지만 반복되므로 n+1까지 설정 s = s + i # 새로 저장 값 = 초기화된 S + 반복되는 숫자 return s ## 결과값 출력 ## 함수 불러서 결과 도출해보기 print(sum_n(10)) # 1 ~ 10까지 합 S가 출력 print(sum_n(100)) # 1 ~ 100까지 합 S가 출력

그럼 나오는 값은 아래와 같습니다.

결과
55
5050


처음이라 어려우신가요? 그럼 혹시 학생때 배운 식을 적용하신다면 어떨까요?
문제 1. 의 일반식 n(n+1)/2를 기억하시나요? 이 일반식을 파이썬 프로그래밍에 적용한다면 어떨까요?

def sum_n(n): ## n을 입력받는 함수 return n*(n+1)/2 #n을 입력받은 후 n*(n+1)/2를 계산한 후 출력 ## 위에 만든 식 불러보기 print(sum_n(10))

이 프로그램을 적용해본다면 55가 똑같이 출력되겠죠?
어떠세요? 아래 방법이 훨씬 간단하지 않나요? 위 방법은 큰 숫자가 입력되면될수록 연산 횟수가 매우 증가하는데요.
아래 방법은 큰 숫자가 들어와도 연산 횟수가 적은 것이 특징이고 장점입니다.
컴퓨터도 사람과 비슷해서 오래 일하는 것을 안 좋아합니다. 간결하고 간단하게 짜인 코드는 금방 연산하죠. 그래서 프로그래밍은 복잡하면 복잡할수록 결과를 늦게 생성하는 거랍니다. 따라서 알고리즘은 간결하고 명확한 것이 좋다고 말하는 거랍니다.


이번 글은 여기까지입니다. 이 글 보시는 모든분들 프로그래밍 공부 이제 시작입니다. 화이팅! 책 완독하기로해요!

2022년 01월 10일
째까일지

//

P.S. 벌써 1월 일주일 가고있어요. 신기방기.

반응형

댓글