TIL | 알고리즘 기초#3 & Git
재귀 함수(Recursive Function) -2
자릿수 합 재귀함수로 구하기
# n의 각 자릿수의 합을 리턴
def sum_digits(n):
if n < 10:
return n
return n % 10 + sum_digits(n // 10)
# 테스트
print(sum_digits(22541))
print(sum_digits(92130))
print(sum_digits(12634))
print(sum_digits(704))
print(sum_digits(3755))
14
15
16
11
20
리스트 뒤집기
# 파라미터 some_list를 거꾸로 뒤집는 함수
def flip(some_list):
if len(some_list) == 1:
return some_list
return some_list[-1:] + flip(some_list[:-1])
# 테스트
some_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
some_list = flip(some_list)
print(some_list)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
Brute Force
# n의 각 자릿수의 합을 리턴
def sum_digits(n):
if n < 10:
return n
return n % 10 + sum_digits(n // 10)
# 테스트
print(sum_digits(22541))
print(sum_digits(92130))
print(sum_digits(12634))
print(sum_digits(704))
print(sum_digits(3755))
14
15
16
11
20
# 파라미터 some_list를 거꾸로 뒤집는 함수
def flip(some_list):
if len(some_list) == 1:
return some_list
return some_list[-1:] + flip(some_list[:-1])
# 테스트
some_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
some_list = flip(some_list)
print(some_list)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
가능한 모든 방법을 다 시행하는 것
장점
-직관적이고 명확하다
-답을 확실하게 찾을 수 있다
단점
-인풋 엄청 큰 경우에는 효율성이 떨어진다
예제 1
왼쪽 뭉치에서 카드를 하나 뽑고 오른쪽 뭉치에서 카드를 하나 뽑아서, 두 수의 곱 중에서 가장 큰 값을 구하기
-일단 가능한 모든 조합을 보기 위한 중첩 반복문 구하기→ 리스트로 저장 → 가장 큰 값을 전후로 비교할지 고민하다가 리스트 재배열 후 가장 큰 값 보여주기
def max_product(left_cards, right_cards):
# 모든 곱셈의 값을 담기위한 list 생성
multi_list = []
# 가능한 모든 조합을 보기 위한 중첩 반복문
for i in left_cards:
for j in right_cards:
multi_list.append(i * j)
multi_list.sort()
return multi_list[-1]
# 테스트
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
24
32
28
Git
기능
-버전 관리
-협업 가능
-외부 컴퓨터로 파일 전송가능(백업가능)
Github
-Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트
기본개념
Commit 커밋
-프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위&결과물
Repository 레포지토리
-커밋이 저장되는 곳
repository 만들기
$ mkdir MathTool # mkdir 폴더명. 디렉토리 생성하기
$ ls # 리스트 확인하기
$ cd MathTool/ # 폴더 안으로 들어가기
$ git init # 비어있는 레포지토리 생산하기
Commit 주의사항
1.처음으로 커밋을 하기 전 사용자의 이름과 이메일 주소
설정
2.커밋할 파일을 git add
로 지정해주기
3.커밋 메세지 남기기(옵션 -m)
<예시>
# 파일 들어가기
$ cd ..
# 파일 생성확인(Lisence, calculator.py 파일 생성 후)
$ ls -al
#사용자 이름 및 이메일 주소 설정
$ git config user.name "ash"
$ git config user.email "**@gmail.com"
# 커밋할 파일을 git add로 지정해줘야 함
$ git add calculator.py
$ git add License
# 커밋 메세지 포함하여 커밋 실행
$ git commit -m "Creat calculator.py and License"
깃 용어 정리
- git init : 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(=working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리) 생성
- git config user.name 'codeit' : 현재 사용자의 아이디를 'codeit'으로 설정(커밋할 때 필요한 정보)
- git config user.email '[email protected]' : 현재 사용자의 이메일 주소를 '[email protected]'로 설정(커밋할 때 필요한 정보)
- git add [파일 이름] : 수정사항이 있는 특정 파일을 staging area에 올리기
- git add [디렉토리명] : 해당 디렉토리 내에서 수정사항이 있는 모든 파일들을 staging area에 올리기
- git add . : working directory 내의 수정사항이 있는 모든 파일들을 staging area에 올리기
- git reset [파일 이름] : staging area에 올렸던 파일 다시 내리기
- git status : Git이 현재 인식하고 있는 프로젝트 관련 내용들 출력(문제 상황이 발생했을 때 현재 상태를 파악하기 위해 활용하면 좋음)
- git commit -m "커밋 메시지" : 현재 staging area에 있는 것들 커밋으로 남기기
- git help [커맨드 이름] : 사용법이 궁금한 Git 커맨드의 공식 메뉴얼 내용 출력
Author And Source
이 문제에 관하여(TIL | 알고리즘 기초#3 & Git), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sihaha/TIL-알고리즘-기초3-Git저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)