오늘의 목표
타임어택
git 강의 1주차
algorithm 강의 4주차 찍먹
http/https cs강의(보다말았음)
def solution(angle):
answer = 0
if 0 < angle < 90:
answer = 1
elif angle == 90:
answer = 2
elif 90 < angle < 180:
answer = 3
elif angle == 180:
answer = 4
return answer
print(solution(70))
print(solution(91))
print(solution(180))
import math
def solution(price):
answer = 0
if 10 <= price <= 1000000:
if price >= 500000:
answer = price * ((100 - 20) / 100)
elif price >= 300000:
answer = price * ((100 - 10) / 100)
elif price >= 100000:
answer = price * ((100 - 5) / 100)
else:
answer = price
else:
return 'price가 잘못되었습니다.'
return math.trunc(answer)
print(solution(150000))
print(solution(580000))
def solution(order):
answer = 0
list = [3, 6, 9]
if 1 <= order <= 1000000:
string = str(order)
for index in range(len(list)):
for i in range(len(string)):
if list[index] == int(string[i]):
answer += 1
return answer
print(solution(3333))
-내거(우중님 도움)
def solution(id_pw, db):
answer = ''
if id_pw not in db:
for i in range(len(db)):
if id_pw[0] not in db[i]:
answer = 'fail'
else:
answer = 'wrong pw'
break #우중님
else:
answer = 'login'
return answer
-asher park 도움
def solution(id_pw, db):
answer = ''
if id_pw not in db:
for i in range(len(db)): #포문내용
if id_pw[0] not in db[i]:
answer = 'fail'
continue
else:
if id_pw[1] not in db[i]:
answer = 'wrong pw'
break
else:
answer = 'login'
break
else:
answer = 'login'
return answer
-준호님 도움
def solution(id_pw, db):
if id_pw not in db:
for i in db:
if id_pw[1] != i[1]:
return 'wrong pw'
elif id_pw[0] != i[0]:
return 'fail'
else:
return 'login'
- 버전관리를 한다는 것은 프로젝트 상태가 변경되는 정보를 알고 있다는 것.
Git 은 commit 을 사용해서 버전이 달라지는 것을 관리.- 컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 만들 수 있음. 이 작업을 git 초기화(git initialize)한다고 표현합니다.
- 현재 프로젝트의 상태를 저장하는 것을 commit 이라고 합니다.
- commit 에는 아래를 포함.
- 누가(author), 언제 commit 했는지의 정보와 프로젝트 변경 내용
- 작업내역이 어떤 것인지 알아볼 수 있게 적는 메시지를 'commit 메시지'.
- commit 에 반영할지 안할지는 파일 단위로 선택할 수 있음.
commit 에 반영할 파일을 선택하는 것을 add (혹은 staging, 스테이징).- commit 한 기록은 history 로 볼 수 있음.
- 소스트리에서 'git 초기화하기(initialize) - add(staging) - commit'.
- git 초기화는 처음에 단 한번만 해 주면 된다. 작업 내역을 저장하기 위해서는 add - commit 만 하면 된다.
- 'Git으로 관리되는 프로젝트' 를 Git 에서는 repo(리포, repository 리포지토리의 약자) 라고 부른다.
- 내 컴퓨터에 저장되어있는 리포지토리를 로컬 repo(local repository).
Github 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것을 원격 repo(remote repository) .
- 로컬 repo 의 commit 들을 원격 repo 에 반영하는 것을 push(푸쉬)이라고 해요. commit들을 밀어넣기!
- 원격 repo 의 commit 들을 로컬 repo 에 반영하는 것을 pull(풀) 이라고 해요. commit들을 땡겨오기!
- 원격 repo 를 내 컴퓨터에서도 사용할 수 있도록 가져올 수도 있어요. 일종의 초기 다운로드라고 생각하면 됩니다. 이걸 clone(클론, 복제) 라고 해요.
- 뿌리와 가지로 구성되어 거꾸로 세워놓은 나무처럼 보이는 계층형 비선형 자료 구조.
- 선형구조 : 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태/ 자료를 저장하고 꺼내는 것에 초점 ( 큐 와 스택 )
- 비선형구조 : 데이터가 계층적 혹은 망으로 구성/ 표현에 초점
Node: 트리에서 데이터를 저장하는 기본 요소
Root Node: 트리 맨 위에 있는 노드
Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄
Parent Node: 어떤 노드의 상위 레벨에 연결된 노드
Child Node: 어떤 노드의 하위 레벨에 연결된 노드
Leaf Node(Terminal Node): Child Node가 하나도 없는 노드
Sibling: 동일한 Parent Node를 가진 노드
Depth: 트리에서 Node가 가질 수 있는 최대 Level
- 이진 트리, 이진 탐색 트리, 균형 트리(AVL 트리, red-black 트리), 이진 힙(최대힙, 최소힙) 등 되게 다양한 트리
- 이진트리(Binary Tree) : 각 노드가 최대 두 개의 자식을 가진다.
- 완전이진트리 : 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입해야한다.
o Level 0 o o Level 1 o o Level 2 # -> 이진 트리 O 완전 이진 트리 X o Level 0 o o Level 1 o o o Level 2 # -> 이진 트리 O 완전 이진 트리 O
: 완전 이진 트리를 사용하는 경우
트리를 구현할 때는 편의성을 위해 0번째 인덱스는 사용되지 않습니다!
그래서 None 값을 배열에 넣고 시작합니다! [None]
8 Level 0 -> [None, 8] 첫번째 레벨의 8을 넣고, 6 3 Level 1 -> [None, 8, 6, 3] 다음 레벨인 6, 3을 넣고 4 2 5 Level 2 -> [None, 8, 6, 3, 4, 2, 5] 다음 레벨인 4, 2, 5를 넣으면 됩니다! 자 그러면, [None, 8, 6, 3, 4, 2, 5] 라는 배열이 되는데 다시 역으로 이 배열을 활용해서 트리 구조를 분석해보겠습니다. 다음과 같은 방법으로 트리 구조를 파악할 수 있습니다. 1. 현재 인덱스 * 2 -> 왼쪽 자식의 인덱스 2. 현재 인덱스 * 2 + 1 -> 오른쪽 자식의 인덱스 3. 현재 인덱스 // 2 -> 부모의 인덱스 예를 들어서 1번째 인덱스인 8의 왼쪽 자식은 6, 오른쪽 자식은 3 입니다. 그러면 1 * 2 = 2번째 인덱스! 6! 그러면 1 * 2 + 1 = 3번째 인덱스! 3! 입니다! 부모를 찾아보면, 3 // 2 = 1번째 인덱스 8 이므로 부모를 찾을 수 있습니다. 이를 다시 생각해보면 [None, 8, 6, 3, 4, 2, 5] 는 8 밑에 6, 3 이 있고, 6, 3 밑에 4, 2, 5가 있는 완전 이진 트리구나! 생각할 수 있습니다.
같이 놀자면서 혼자서 공부 엄청 했네요 배신감 듭니다