오늘의 일정
오전(09:00 ~ 13:00) 09:00~10:00 코드 카타 3문제 및 팀 오전 회의
10:00~12:00 git 특강
12:00~13:00 git 리뷰
오후(14:00 ~ 18:00) 14:00~16:00 베이직반 수업
16:00~16:30 베이직반 수업 리뷰
16:30~18:00 머신러닝 공부
저녁(19:00 ~ 21:00) 19:00~21:00 머신러닝 공부

요약

  1. 코드 카타
    1. 피자 나눠먹기(3)
    2. 짝수 홀수 개수
    3. 자릿수 더하기
  2. git 특강
    1. 협업
      1. Repository에 팀원 초대하기
      2. Pull Request(PR) 생성
  3. 베이직반 수업
    1. map()
    2. 무명함수(==lambda)
    3. 재귀함수
  4. 머신러닝 이론 공부

오전(09:00 ~ 13:00)

1. 코드 카타

1.1. 피자 나눠먹기(3)

def solution(slice, n):
    1 < slice < 11
    
    if n % slice != 0:
        answer = 1
    else:
        answer = 0
    
    return answer + n // slice

 

🤔 문제 풀이방법

  • 피자를 잘라 줄 거예요
  • if n % slice != 0: answer = 1
    • 사람 수(n)에 피자 조각(slice)을 나눴을 때 나머지가 생긴다면 피자 조각이 부족한 거니까 1판을 더 시켜줄게요
  • else: answer = 0
    • 사람 수(n)에 피자 조각(slice)을 나눴을 때 나머지가 없다면 그대로 갈게요
  • return answer + n // slice
    • 추가된 피자 판 수(answer)와 사람(n)수에 피자 조각(slice)을 나눈 몫을 리턴해주면 문제 해결!

다른 사람 풀이 

def solution(slice, n) :
		return (n-1) // slice +1
        
# 🤔 문제 풀이방법
#올림을 하기 위해서 n에서 1을 빼 주었고 피자의 조각수로 나눈 몫에 +1을 하여 문제 해결!

 

아니,, 이렇게 간단한 방법이,, 🧐

 

1.2. 짝수 홀수 개수

def solution(num_list):
    answer = [0,0]
    for num in num_list:
        if num % 2 == 0:
            answer[0] += 1
            
        if num % 2 != 0:
            answer[1] += 1
    return answer

 

🤔 문제 풀이방법

  • answer = [0,0]
    • 짝수와 홀수 개수를 받아줄게요
  • for num in num_list:
    • num_list를 num으로 하나씩 순차적으로 받아줄게요
  • if num % 2 == 0: answer[0] += 1
    • 만약 num이 2로 나눴을 때 나머지가 없다면 answer의 첫 번째 자리에 +1 해줄게요 (짝수 개수)
  • if num % 2 != 0: answer[1] += 1
    • 만약 num이 2로 나눴을 때 나머지가 있다면 answer의 두 번째 자리에 +1 해줄게요 (홀수 개수)
  • return answer
    • 리턴하면, 문제 해결!

 

1.3. 자릿수 더하기

def solution(n):
    answer = []
    
    answer = map(int,str(n))
    return sum(answer)

 

🤔 문제 풀이방법

  • answer = []
    • n을 담을 걸 리스트화 해줬어요
  • answer = map(int,str(n))
    • answer 안에는 문자열화 된 n을 각각 int형으로 변환해주며 들어갔어요
  • return sum(answer)
    • 이제 answer을 sum해주면 문제 해결!

 

#1트
def solution(n):
    answer = []
    
    for i in n:			# n이 int형이라서 불가능 ("1234")
        answer.append(i)
    return sum(answer)
    
# 결괏값
# TypeError: 'int' object is not iterable

 

다시 보니까 눈에 보이네요 '.append() 함수 때문에 틀린 건가?' 하는 생각이요,,

왜냐면 리스트에 값을 넣을 때 쓰는 함수잖아요

 

이걸 해결하는 방법이,,

 

# 다른 팀원 풀이
def solution(n):
    answer = 0
    
    for i in str(n):
        answer += int(i)
        
    return answer

 

이렇게 했으면 1트만에 풀 수 있었던 건데!! ㅠㅠ

그래도 근접하게 첫 시도를 한 거 같아서 기분 좋아요 🤪

 

#2트

def solution(n):
    answer = []
    
    answer = map(int,str(n))
    return sum(answer)

 

int형이 안 됐나..? 라고 해석을 해서

n을 문자형으로 바꾸고 각각의 값을 int화 시켜야겠다는 생각을 했어요

그래서 map 함수를 써서 int화 시키고 반환해주니까 정답이었어요 >_<

 

# 다른 팀원 풀이
def solution(n):
    return sum([int(i) for i in str(n)])
    
# 🤔 **문제 풀이방법**
# 정수 n을 문자형으로 변환해서 숫자를 하나씩 가져오고, 가져올 때는 정수형으로 변환
# sum() 함수로 정수들 다 합한 값 반환

 

 

2. git 특강

2.1. 협업

2.1.1. Repository에 팀원 초대하기

 

🤔 깃 허브에 들어가셔서 해당 Repository의 Settings에 들어가면 Collaborators가 보일 거예요 눌러주세요

  1. Git Hub에 접속
  2. 협업 Repository 생성 및 Settings 클릭
  3. Collaborators 접속

 

🤔 밑으로 내려보시면 "Add people" 버튼이 보일 거예요

 

 

🤔 거기에서 Git Hub의 이름이거나 full name 혹은 e-mail 주소를 입력하셔서 팀원을 찾아주세요!

이 과정을 완료 하셨으면 해당 팀원분께 메일 또는 Git Hub 알림이 알 겁니다!

같이 공유해서 쓰시면 됩니다 🤗

 

 

2.2.2. Pull Request(PR) 생성

 

🤔 프로젝트로 운영될 Repository에 들어간다면 상단에 Pull requests 버튼이 보일 거예요

🤔 버튼을 눌러 줄게요

🤔 그럼 New Pull request 버튼이 보일 거예요 눌러주세요!

 

 

🤔 다음과 같이 변경된 브랜치를 선택해주세요

🤔 그 뒤 PR 설명란에 작업한 내용을 간략히 작성하고 Create Pull Request 버튼을 눌러주세요

➡️ 피드백 받고 싶은 대상을 직접 설정할 수도 있어요! 

🤔  Create Pull Request 버튼을 누르면 PR 작성이 끝납니다!

 

 

중요해요 

 

  • 각자의 브랜치에서 작업해야 해요!!
  • Pull Request로 코드 리뷰를 한 후에 병합 해주세요!
  • 로컬 브랜치 정리(git branch -d  {브랜치 명} 로컬에서  브랜치 삭제) 및 최신 상태 유지(git pull origin main)

요약

Manager Crew
Git Hub Repository 생성 Git Hub 가입한 이메일로 오는 초대 메일 수락
Local에서 Repository 생성 git clone (URL_git)
git init ((작업))
git remote add origin (URL_git) git add, git commit
README.md 생성 git push origin master
git add, git commit  
git push origin master  
Manage access -> invite a collacorator  

 


오후(14:00 ~ 18:00)

3. 베이직반 수업

3.1. map()

# map()
numbers_str = ["1", "2", "3", "4", "5"]

obj = list(map(int, numbers_str))
print(obj)

 

3.2. 무명 함수 (=lambda)

  • 아주 간단한 경우에만 사용할 수 있음 (굳이 def로 정의내리고 싶지 않을 때 씀)
  • 여러줄 못 만듦 (for, while 못 씀)
  • 자동으로 return됨. (== return을 가질 수 없음)

# lamb da 함수 (무명함수)

x, y = map(int, input().split())
print((lambda x, y: x + y)(x, y))

 

3.3. 재귀 함수

  • 나 자신을 호출하는 함수
  • 반드시 종료 조건이 있음
  • 반드시 표현 방식이 있음
  • 예) 팩토리얼 (5!)
# 팩토리얼
def fact(n):
    if n == 1: 
        return 1
    return n * fact(n - 1)

print(fact(5))

# 결괏값
# 120

 

🤔 코드 풀이

  • def fact(n):
    • 얘 자체를 재귀 함수로 지정할게요
  • if n == 1: 
    • 만약 n이 1일 때 작동하도록 설정했습니다
  • return 1 : 종료 조건
    • 종료 조건이에요
    • 곱하기를 해줄 거기 때문에 0이 되면 안 되겠죠? 그래서 1을 넣었습니다
  • return n * fact(n - 1) : 표현 방식
    • 이제 팩토리얼 해줄게요

마무리

말로만 듣던 람다 함수를 배웠어요!

원리를 알게 되니까 재밌더라구요 ㅎㅎ

 

리스트 컴프리헨션도 최근에 배웠었는데 그거랑 구조가 비슷해 보이네요!

이제 점점 아는 게 많아지나 봐요 점점 연관지어서 생각 흐름이 흘러가네요

 

굉장히 뿌듯합니다 🤭

 

이렇게 또 일주일이 끝나가네요,,!

금주 동안 고생 많으셨어요 🤗

주말에 푹 쉬시고! 다음주에도 뵈어요~!

+ Recent posts