오늘의 일정
오전(09:00 ~ 13:00) 09:00~09:30 코드 카타 3문제
09:00~09:45 Chapter 3 발제
09:50~13:00 프로그래머스 4문제
오후(14:00 ~ 18:00) 14:00~18:00 파이썬 기본 이론 공부
저녁(19:00 ~ 21:00) 19:00~20:30 베이직반 수업
20:30~21:00 TIL 마무리

요약

  1. 코드 카타 3문제
    1. 소문자로 바꾸기
    2. 원소들의 곱과 합
    3. 문자열 곱하기
  2. 프로그래머스 4문제
    1. 가까운 수 https://bmk0703.tistory.com/103
    2. 한 번만 등장한 문자 https://bmk0703.tistory.com/104
    3. 7의 개수 https://bmk0703.tistory.com/105
    4. A로 B 만들기 
  3. 파이썬 기본 이론 공부
    1. 제01장 첫 번째 계단밟기 
      1. 프로그램, 프로그래밍 언어 https://bmk0703.tistory.com/106
      2. 주석, 들여 쓰기, 행결합/행분리 https://bmk0703.tistory.com/107
    2. 제02장 두 번째 계단밟기
      1. Python(파이썬) 표준 입출력, 출력 https://bmk0703.tistory.com/108
  4. 베이직반 수업

오전(09:00 ~ 13:00)

1. 코드 카타 3문제

1.1. 소문자로 바꾸기

def solution(myString):
    return myString.lower()

 

🤔 문제 풀이방법

  • .lower() 함수를 써서 소문자화 해주었어요
  • .upper() 함수를 쓰시면 대문자화 할 수 있어요

 

1.2. 원소들의 곱과 합

def solution(num_list):
    answer = 0
    multiply = 1
    add = 0
    
    for i in range(len(num_list)):
        multiply *= num_list[i]
        add += num_list[i]
        
        if multiply < add**2:
            answer = 1
        else:
            answer = 0
           
    return answer

 

🤔 문제 풀이방법

  • answer = 0
    multiply = 1
    add = 0
    • for문을 각각 더해주고, 곱해줄 거기 때문에 객체를 만들어주었어요
    • multiply는 곱해줄 거기 때문에 1부터 시작할게요
  • for i in range(len(num_list)):
    • 인덱스 값으로 뽑아낼 거기 때문에 num_list의 길이만큼 range를 i로 출력할게요
  • multiply *= num_list[i]
            add += num_list[i]
    • num_list의 i번째 숫자를 각각 곱해주고 더해준 값을 각각의 객체에 넣어줬어요
  • if multiply < add**2:
                answer = 1
            else:
                answer = 0
    • 모든 원소들의 곱이, 모든 원소들의 합의 제곱보다 작으면 1을 출력해요
    • 아닌 경우에는 0을 출력하도록 했어요
    • return 해주면 문제 해결!
def solution(num_list):
    multiply = 1
    add = 0
    
    for i in range(len(num_list)):
        multiply *= num_list[i]
        add += num_list[i]
           
    return 1 if multiply < add**2 else 0

 

문제는 해결했지만, 코드를 줄여보고 싶더라구요

그래서 튜터님의 도움을 받아서 삼항 연산자를 통해 코드 길이를 줄여보았어요!

 

1.3. 문자열 곱하기

def solution(my_string, k):
    return my_string *k

 

🤔 문제 풀이방법

  • 문자열 반복은 곱하기(* 숫자) 해주시면 원하는 숫자만큼 반복 출력돼요

 

2. 프로그래머스 4문제

2.1. 가까운 수

def solution(array, n):
    array.sort()
    sub_array = []
    
    for i in range(len(array)):
        sub_array.append(abs(n - array[i]))
        
    return array[sub_array.index(min(sub_array))]

 

🤔 문제 풀이

  • array.sort()
    • 문제에서 "정렬된" 매개변수가 주어진다 하진 않았으니까 정렬부터 해줄게요
  • sub_array = []
    • n과의 차이를 구한 결괏값을 담는 객체를 만들어줄게요
  • for i in range(len(array)):
    • 이번에도 인덱스 형태로 뽑아낼게요
  • sub_array.append(abs(n - array[i]))
    • abs() 함수는 절댓값을 뽑아내는 함수예요
    • n에 array[i]번째 값을 뺀 절댓값을 sub_array에 넣어줄게요
  • return array[sub_array.index(min(sub_array))]
    • min(sub_array) : 가장 작은 값
    • sub_array.index(min(sub_array)) : sub_array에서 min(sub_array)인 값의 인덱스 번호를 찾는 거예요
    • array[sub_array.index(min(sub_array))] 이제 그 결괏값의 인덱스 번호를 array에서 데리고 올게요
    • 뭔 말인지 모르겠죠? 저도 그랬어요
array = [3, 10, 28]
sub_array = [17, 10, 8]

min(sub_array) == 8

sub_array.index(min(sub_array)) == sub_array.index(8) == 2

array[sub_array.index(min(sub_array))] 
                      == array[sub_array.index(8)] == array[2] == 28
  • 이렇게 되는 거예요!

진짜,, 1시간 30분이나 걸리며 풀었던 문제예요 ㅠㅠㅠㅠㅠㅠㅠ

너무 어렵더라구요,,

초반에 접근 방식은 좋았는데, 그 뒤로 코드를 완성시키지 못해서 고민이 많이 된 문제였어요

 

 

2.2. 한 번만 등장한 문자

def solution(s):
    answer = ''
    
    for i in s:
        if s.count(i) ==1:
            answer +=i
        
    return ''.join(sorted(answer))

🤔 문제 풀이

  • for i in s:
            if s.count(i) ==1:
                answer +=i
    • for문을 통해서 s의 문자열에서 한 번만 등장한 문자의 수를 셀 거예요
    • 만약 s에서 i의 문자가 1과 같다면 answer에 i 값을 추가해 줄게요
  • return ''.join(sorted(answer))
    • 그리고 추가된 i들을 정렬해 준 뒤, join 함수를 써서 ''에 넣어주고 retrun 해주면 문제 해결!

 

오늘은 .count() 함수를 쓰는 문제가 많이 나온 거 같아요!

.count() 함수를 연속해서 쓰다 보니까 감이 잡히네요!

 

2.3. 7의 개수

def solution(array):
    array = str(array)
    return array.count('7')

 

🤔 문제 풀이

  • array = str(array)
    • array를 문자열화 해줄게요
  • return array.count('7')
    • 문자열화 한 array에서 '7'이 몇 개가 있는지 .count() 함수를 써서 개수를 확인하면 문제 해결!

 

이번에도 .count() 함수를 써서 문제를 해결할 수 있었어요 🤭

 

2.4. A로 B 만들기

def solution(before, after):
    answer = 0
    
    if sorted(before) == sorted(after):
        answer = 1
    else:
        answer = 0
        
    return answer

 

🤔 문제 풀이

  • 문제를 보자마자 'before와 after 속의 문자들이 같으면 되겠구나' 싶었어요
  • if sorted(before) == sorted(after):
            answer = 1
    • 그래서 if문으로 각각 sorted 한 값이 같다면 1을 출력해 주고
  • else:
            answer = 0
    • 그게 아니라면 0을 출력하도록 해서, return 해주면 문제 해결!

 

 

엥..? 5점이나 주네요?

 

오늘도 이렇게 문제를 풀어보았어요!

갈수록 입문 테스트 문제가 아닌 것만 같은 느낌이 들어요,, 🤔

오랜만에 1시간 이상 걸리면서 고민하고 문제 푼 기분이네요!

굉장히 머리가 간지럽고 뿌듯했던 문제 풀이었어요 ㅎㅎ

 

함수를 찾는 과정에서도, 인터넷에 어떻게 검색을 해야 알 수 있을지도 감 잡았어요!

재밌었습니다 😋


오후(14:00 ~ 18:00)

3. 파이썬 기본 이론 공부

3.1. 제01장 첫 번째 계단밟기

3.1.1. [Python] 프로그램과 프로그래밍 언어

3.1.2. [Python] 주석, 들여 쓰기, 행결합/행분리

 

01 주석

주석을 이렇게나 쉽게 달 수 있다니,, 신세계였어요

 

 

03 행결합/행분리

이게 더 신기해요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

세미콜론도 쓰는 경우가 있군요!!

11번째, 12번째 코드가 진짜 신기해요!!

 

03 행분리

호오,, 🤔 

역시 공부를 할 땐, 기본서부터 읽어둬야 할 거 같아요

몰랐던 개념이 아주 그냥 물 흐르듯이 나오네요 🥲

 

 

3.2. 제02장 두 번째 계단밟기

3.2.1. [Python] Python 표준 입출력, 표준 출력


저녁(19:00 ~ 21:00)

4. 베이직반 수업


마무리

하,, 머리야

파이썬을 제대로 잘 잡아놔야 더 상위 개념을 배울 때, 흔들리지 않고 진도가 나아갈 거라 생각했거든요

그래서 이번주 주말까지 파이썬 기본 이론들 꽉 잡을 생각이에요

 

갈수록 할 게 많아지는데, 기초가 아직 튼튼하지 않아서 걱정이네요 🥲

더 많은 생각이 들기 전에, 정리하도록 하겠습니다

 

오늘도 수고 많으셨어요, 안녕히 주무세요

감사합니다

+ Recent posts