인사말

안녕하세요~!

저는 오전까지는 계속 낑낑대다가 오후가 되어서야 몸이 괜찮아져서

오후부터 공부하러 들어왔답니다 😎

그래서 그런지 오늘은 한 게 별로 없네요 ㅠ

 

그래도 파이팅입니다!

 

오늘의 일정
오후(16:30 ~ 18:00) 16:30~17:00 코드 카타 2문제 풀기
17:00~19:00 파이썬 프로그래밍의 기초, 자료형_문자열 자료형
저녁(19:00 ~ 21:00) 19:00~20:00 베이직반 수업

요약

  1. 코드 카타 2문제
    1. rn_string
    2. 두 수의 연산값 비교하기
  2. 파이썬 기본 이론 공부
    1. 파이썬 프로그래밍의 기초, 자료형 https://bmk0703.tistory.com/123
  3. 베이직반 수업
    1. 2차원 문제 풀기
      1. 특별한 2차원 배열
      2. 2차원 리스트를 1차원 리스트로 만들기
      3. 행렬 덧셈

오후(16:30 ~ 18:00)

1. 코드 카타 2문제

1.1. rn_string

def solution(rny_string):
    return rny_string.replace("m","rn")

 

🤔 문제 풀이

  • return rny_string.replace("m","rn")
    • replace로 그냥 변경해 주시면 문제 해결이에요!

 

1.2. 두 수의 연산값 비교하기

def solution(a, b):
    return int(str(a) + str(b)) if int(str(a) + str(b)) > 2*a*b else 2*a*b

 

🤔 문제 풀이

  • return int(str(a) + str(b)) if int(str(a) + str(b)) > 2*a*b else 2*a*b
    • 삼항 연산자로 풀었어요!
    • if int(str(a) + str(b)) > 2*a*b
      • 만약 숫자를 문자형으로 바꾼 걸 그대로 이어 붙인 값이 2*a*b 보다 크면
    • int(str(a) + str(b))
      • 이 값을 출력해 줄게요
    • else 2*a*b
      • 만약 2*a*b가 더 크다면 2*a*b가 출력되도록 적어주면, 문제 해결!

 

2. 파이썬 기본 이론 공부

2.1. 파이썬 프로그래밍의 기초, 자료형_문자열 자료형 https://bmk0703.tistory.com/123

→ 포매팅부터~


저녁(19:00 ~ 21:00)

3. 베이직반 수업

3.1. 2차원 문제 풀기

3.1.1. 특별한 2차원 배열

def solution(arr):
    answer = 1      # 아래 코드는 대칭이 아닌 경우만 찾을 예정

    for i in range(len(arr)):   # 이차원이니까 범위 두 개 필요, 그 범위는 arr의 길이만큼
        for j in range(len(arr[i])):    # j는 len(arr)의 i 위치까지로 범위 설정
            if arr[i][j] != arr[j][i]:  # 만약 대칭이 아니라면
                answer = 0              # answer을 0으로 변경
    return answer

 

 

3.1.2. 2차원 리스트를 1차원 리스트로 만들기

def solution(mylist):
    return sum(mylist, [])
# 튜터님 문제 풀이
def solution(mylist):
    answer = []
    for i in mylist:
        answer.extend()
    return answer

 

다른 다양한 방식으로 2차원을 1차원으로 만들 수 있어요.

저는 가장 간단한 sum을 써서 해결했고요

.extend() 함수를 써서도 해결할 수 있다는 걸 튜터님께서 알려주셨어요.

my_list = [[1,2], [3,4], [5,6]]
함수 결괏값
print(sum(my_list, []) [1, 2, 3, 4, 5, 6]
print(list(itertools.chain(*board))) [1, 2, 3, 4, 5, 6]
from functools import reduce
print(list(reduce(
lambda x, y: x+y, my_list)))
[1, 2, 3, 4, 5, 6]
from functools import reduce
import operator
print(list(reduce(operator.add, my_list)))
[1, 2, 3, 4, 5, 6]

 

3.1.3. 행렬 덧셈

row_list,cols_list = [],[]
N, M = map(int, input().split())

for i in range(N):
    row = list(map(int, input().split()))
    row_list.append(row)

for i in range(N):
    cols= list(map(int, input().split()))
    cols_list.append(cols)
    
for i in range(N):
    for j in range(M):
        print(str(row_list[i][j] + cols_list[i][j])+" ", end ="")
    print()

 

🤔 문제 풀이

  • row_list,cols_list = [], []
    • 행, 열을 받을 리스트를 만들어줄게요
  • N, M = map(int, input().split())
    • 두 번째 줄부터 백준에서 입력해 준다고 하길래 두 번째 줄에 받도록 했어요
  • for i in range(N):
        row = list(map(int, input().split()))
        row_list.append(row)
    • 한 행씩 입력을 받으니까 행 크기(N)만큼 반복해서 받을게요
    • map 함수는 map 객체를 반환하기 때문에 list화 해줄게요
  • for i in range(N):
        cols= list(map(int, input().split()))
        cols_list.append(cols)
    • 이번에는 코드는 열로 받아낼게요
  • for i in range(N):
        for j in range(M):
            print(str(row_list[i][j] + cols_list[i][j])+" ", end ="")
        print()
    • 반복문을 통해서 row_list와 cols_list의 동일 행&동일 열에 위치한 원소를 더해줄게요
    • 그리고 end=""를 써서 그 행과 열이 끝났음을 알려줄게요
    • print()를 통해 줄 바꿈을 해주어 행을 구분하면, 문제 해결!

 


마무리

공부를 하다 보니까 컨디션이 돌아와서 마무리 지을 수 있었어요

사실 침대에 누워서 굴러대기만 했더니 너무,, 현타 왔었거든요

공부하길 잘한 거 같아요 😽

 

오늘도 수고 많으셨습니다~!

감사합니다~!

+ Recent posts