인사말
안녕하세요!
이번 연도가 끝을 달려가고 있어요
올해는 여러분에게 어떤 해였나요? 😎
저는 올해 초반에는 버거운 일들이 많아서 힘겨웠지만
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 머신러닝 과제 수행 |
요약
- 코드 카타 3문제
- 옷가게 할인받기
- 제곱수 판별하기
- 숨어있는 숫자의 덧셈(1)
- 베이직반 수업
- Python OOP
- 데이터 타입을 분류하는 이유
- 프로그래머스 4문제 풀이
- 배열 회전시키기 https://bmk0703.tistory.com/85
- 369게임 https://bmk0703.tistory.com/86
- 숫자 찾기 https://bmk0703.tistory.com/87
- 문자열 정렬하기(2)
- 머신러닝 과제_지도학습 끝 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. 머신러닝 과제_지도학습 끝
마무리
머신러닝 지도학습 과정을 수행할 때, 좀 더 체계적으로 빠짐없이 해야겠어요
일단 첫 번째 시도는 틀렸구요! 오늘 밤새서라도 꼼꼼하게 새로 시작해 보려고요
머신러닝 지도학습을 어느 정도 숙지하면, 비지도 학습은 쉽게 수행할 수 있을 거라 생각해요
파이팅!!!
생각이 더 많아지기 전에, 일단 해봐야겠어요
감사합니다 :)
'내일배움캠프 TIL' 카테고리의 다른 글
[TIL] 내일배움캠프 본캠프 26일차_코드 카타, 프로그래머스, 마크다운, github 협업하기 (0) | 2024.12.31 |
---|---|
[TIL] 내일배움캠프 본캠프 25일차_코드 카타, 비지도학습, 프로그래머스 (0) | 2024.12.30 |
[TIL] 내일배움캠프 본캠프 23일차_코드 카타, 프로그래머스 4문제, 머신러닝_지도학습 (1) | 2024.12.26 |
[TIL] 내일배움캠프 본캠프 22일차_코드 카타, 프로그래머스 4문제 (1) | 2024.12.25 |
[TIL] 내일배움캠프 본캠프 21일차_코드 카타, 머신러닝 과제 (0) | 2024.12.23 |