인사말

안녕하세요!

이번 연도가 끝을 달려가고 있어요

올해는 여러분에게 어떤 해였나요? 😎

저는 올해 초반에는 버거운 일들이 많아서 힘겨웠지만

10월부터는 행복한 나날들을 보낸 거 같아요!

끝 기억이 좋으면 한 해가 만족스러워지는 거 같아요 🤭 

 

오늘도 파이팅입니다!

 

오늘의 일정
오전(09:00 ~ 13:00) 09:00~10:00 코드 카타 3문제 및 팀 오전 회의
10:00~12:00 베이직반 수업
오후(14:00 ~ 18:00) 14:00~15:00 프로그래머스 4문제 풀이
15:00~16:00 순회 및 TIL 정리
16:00~18:00 머신러닝 과제 수행
저녁(19:00 ~ 21:00) 19:00~21:00 머신러닝 과제 수행

요약

  1. 코드 카타 3문제
    1. 옷가게 할인받기
    2. 제곱수 판별하기
    3. 숨어있는 숫자의 덧셈(1)
  2. 베이직반 수업
    1. Python OOP
    2. 데이터 타입을 분류하는 이유
  3. 프로그래머스 4문제 풀이
    1. 배열 회전시키기 https://bmk0703.tistory.com/85
    2. 369게임 https://bmk0703.tistory.com/86
    3. 숫자 찾기 https://bmk0703.tistory.com/87
    4. 문자열 정렬하기(2)
  4. 머신러닝 과제_지도학습 끝 https://bmk0703.tistory.com/77

오전(09:00 ~ 13:00)

1.1. 옷가게 할인 받기

import math

def solution(price):
    if price >= 500000:
        answer = price - price * 0.2
        
    elif price >= 300000:
        answer = price - price * 0.1
        
    elif price >= 100000:
        answer = price - price * 0.05 
    
    else:
        answer = price
        
    return int(math.trunc(answer))  #.trunc()는 소수점 버림

🤔 문제 풀이방법

  • if price >= 500000: answer = price - price * 0.2
    • 50만 원 구매 시 총가격에 20퍼센트 할인된 가격을 적어주었어요
  • elif price >= 300000: answer = price - price * 0.1
    • 30만 원 구매 시 총가격에 10퍼센트 할인된 가격의 코드예요
  • elif price >= 100000: answer = price - price * 0.05
    • 10만 원 구매 시 총 가격에 5퍼센트 할인 된 가격의 코드예요
  • else: answer = price
    • 10만 원 이하 구매 시, 원금 그대로 지불해야 하구요
  • return int(math.trunc(answer))
    • 나눈 값을 int화 시킨 후, 소수점을 버려주는 .trunc() 함수를 써서 return 했어요!

 

다른 팀원 풀이 

def solution(price):
    if price >= 500000:
        price *= 0.80
    elif price >= 300000:
        price *= 0.90
    elif price >= 100000:
        price *= 0.95
    return int(price)

🤔 문제 풀이방법

  • 조건문을 통해 할인율 적용해 주기
  • 50만 원 이상 사면 20%, 30만 원 이상 사면 10%, 10만 원 이상 사면 5% 할인한 금액을 price로 저장
  • 제한사항에 소수점 이하를 버린 정수를 반환한다고 했으므로, price를 정수형으로 변환해 반환

할인가의 반대 퍼센터를 값에 곱해주면 할인된 금액이 바로 나오는 걸 알게 되었어요!

 

 

1.2. 제곱수 판별하기

def solution(n):
    answer = 0
    
    if (n**0.5) % 1 ==0:
        answer = 1
    else:
        answer = 2
        
    return answer

🤔 문제 풀이방법

  • if (n**0.5) % 1 ==0: answer = 1
    • n에 루트를 씌운 값에 1로 나누었을 때 나머지가 0이라면 제곱수니까 1을 반환해요
  • else: answer = 2
    • 나머지가 0이 아니라면 제곱수가 아니니, 2를 반환해 주면 문제 해결!

 

다른 팀원 풀이 

def solution(n):
    if n % (n ** (1/2)) == 0 :
        return 1
    else :
        return 2

🤔 문제 풀이방법

  • n값을 루트 n값으로 나눈 값의 나머지가 0이라면 1을 반환, 아니라면 2를 반환

n에 루트 n을 바로 나뉘어도 되는 걸!!

하나 더 배워갑니당ㅎㅎ

 

 

1.3. 숨어있는 숫자의 덧셈(1)

def solution(my_string):
    answer = 0
    number = ['0','1','2','3','4','5','6','7','8','9']
    for i in range(len(my_string)):
        if my_string[i] in number:
            answer +=int(my_string[i])
            
    return answer

🤔 문제 풀이방법

  • number = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    • 숫자가 들어있는 리스트를 형성해 줄게요
  • for i in range(len(my_string)): if my_string[i] in number:
    • 만약 my_string 길이만큼의 범위에 number 속, 숫자가 있다면
  • answer +=int(my_string[i])
    • answer에 +1을 하도록 해주면 문제 해결!

 

다른 팀원 풀이 

def solution(my_string):
		numbers = [int(i) for i in my_string if i.isdigit()]
		return sum(numbers)

🤔 문제 풀이방법

  • my_string을 순회하여 요소가 숫자라면 numbers리스트에 int(i)의 값을 저장
  • numbers 리스트를 다 더해주면 결괏값이 나옴

.isdigit() 함수 처음 봤어요

함수 설명 예시
.isdigit() 숫자가 하나라도 있으면 FALSE 반환
숫자가 없으면 TRUE 반환
소숫점과 마이너스는 인식하지 못함
str.isdigit()
문자열이 '숫자'로만 이루어져있는지 확인

 

문자열 안에 숫자가 있는지 없는지 True / False로 판단하는 함수인 거 같아요

 

(10:00 ~ 12:00)

2. 베이직반 수업

2.1. Python OOP

  • 종류
    • 객체지향 프로그래밍 
    • 절차지향 프로그래밍
    • 함수지향 프로그래밍
      • 프로그래밍 : 현실세계 문제를 컴퓨터가 풀게 하기 위해서 "코드"로 컴퓨터에 입력하는 행위
  • Class
    • 특징
      • 속성 및 함수로 구성돼 있음
    • 장점
      • 여러 번 쓸 거 같은 객체일 시, 생성함
      • class 내부가 어떻게 생겼는지 알지 못해도 바로 적용 가능함
    • 단점
      • class 하나를 만들 때, 시간이 많이 듦
      • 상대적으로 실행 속도가 느림 (함수지향, 절차지향 프로그래밍에 비해)
# 상수(불변값) : 상수일 때 모두 대문자로 표기
# 예) class는 붕어빵 틀, instance는 붕어빵

# class 선언 
class Person:	# 여러번 쓸 거 같아서 만드는 객체임
	def __init__(self, name, age):	# class 내부가 어떻게 생겼는지 알지 못해도 바로 적용 가능함
    	self.name = name	# 속성
        self.age = age	# 속성
        
    def greeting(self):
    	print("하이요")


jieun = Person("아이유")	# class의 instance
jimin = Person("지민")	# class의 instance

jieun.greeting()	# 하이요
jimin.greeting()	# 하이요

 

2.2. 데이터 타입을 분류하는 이유

  • 종류
    • 문자열형, 실수형, 정수형, 컨테이너형
  • 이유
    • 메모리와 관련이 깊음
    • 각 데이터 타입에 따라 메모리를 필요로 하는 값이 다름
      • 그래서 같은 타입이 아니라면 오류가 발생하는 것임 

오후(14:00 ~ 18:00)

3. 프로그래머스 4문제 풀이

3.1. 배열 회전시키기

def solution(numbers, direction):
    if direction == "right":
        numbers.insert(0, numbers[-1])  # 원하는 위치 앞에, 추가할 값을 삽입
        numbers.pop()  # pop 함수는 ()에 아무 값도 넣지 않으면 마지막 인덱스를 삭제
        return numbers
        
    else:
        numbers.append(numbers[0])  # 맨 마지막 위치로 첫 번째 숫자가 추가됨
        numbers.pop(0)  # 첫 번째 값을 삭제
        return numbers

 

3.2. 369게임

def solution(order):
    answer = 0
    clapping = ["3", "6", "9"]
    
    for i in str(order):
        if i in clapping:
            answer += 1
            
    return answer

🤔 문제 풀이방법

  • clapping = ["3", "6", "9"]
    • 손뼉 쳐야 하는 해당 값을 리스트로 먼저 만들어주었어요
  • for i in str(order):
    • order은 Int형이기 때문에 문자열화 해주었고, 그 값을 하나하나 i에 넣어줄게요
  • if i in clapping:
    • 만약 i가 리스트 안에 있는 문자라면
  • answer += 1
    • answer에 +1을 해준 값을 더해주고 return 해주면, 문제 해결!

 

3.3. 숫자 찾기

def solution(num, k):
    answer = -1  # 시작을 -1로 설정
    str_num = str(num)
    
    for i in str_num:
        if i == str(k):
            answer = str_num.index(i)+1
        
    return answer

🤔 문제 풀이방법

  • answer = -1  # 시작을 -1로 설정
    • 고정 값으로 answer은 -1로 해둘게요!
  • str_num = str(num)
    • for문을 돌려줄 거기 때문에 num을 문자열화 해줄게요
  • for i in str_num:
    • for문을 돌립니다!
  • if i == str(k):
    • 만약 str_num(==i)이 문자열화 된 k와 같다면
  • answer = str_num.index(i)+1
    • i가 str_num의 index가 뭔지를 출력해 줄게요
    • +1을 해준 이유는, index의 기본값이 0부터 시작이기 때문에 +1을 해주었어요
  • return answer
    • answer을 리턴해주면, 문제 해결!

 

3.4. 문자열 정렬하기(2)

def solution(my_string):
    answer = ''
    
    alphabet_lower = my_string.lower()  # 대문자를 소문자로 바꾸기
    arr_alphabet_lower = sorted(alphabet_lower) # 소문자로 바꾼 문자를 정렬하기
    answer = "".join(arr_alphabet_lower)    # 리스트화 됐으니, join으로 한 번에 모아서 쓰기
    
    return answer

🤔 문제 풀이방법

  • alphabet_lower = my_string.lower()
    • my_string에 있는 대문자들을 소문자화 해줄게요
  • arr_alphabet_lower = sorted(alphabet_lower)
    • 소문자화를 끝냈으면 그 값들을 정렬해 줄게요
  • answer = "".join(arr_alphabet_lower)
    • 정렬을 하면, 리스트로 뽑아내기 때문에, "".join()을 써서 나란히 적어주면, 문제 해결!

 

(17:00~21:00)

4. 머신러닝 과제_지도학습 끝


마무리

머신러닝 지도학습 과정을 수행할 때, 좀 더 체계적으로 빠짐없이 해야겠어요

일단 첫 번째 시도는 틀렸구요! 오늘 밤새서라도 꼼꼼하게 새로 시작해 보려고요

머신러닝 지도학습을 어느 정도 숙지하면, 비지도 학습은 쉽게 수행할 수 있을 거라 생각해요

 

파이팅!!!

 

생각이 더 많아지기 전에, 일단 해봐야겠어요

감사합니다 :)

+ Recent posts