1. 오늘 학습 목표

2. 오늘 학습 한 내용
오늘의 코드카타
오늘은 코드카타 문제 2개를 풀었다.
이번 문제에서는 문자열이 숫자로만 이루어져 있는지 확인하는 방법과 2차원 리스트를 반복문으로 다루는 방법을 연습한다.
코드 자체는 길지 않지만, 조건을 정확히 나누고 리스트 안의 값을 하나씩 꺼내 계산하는 흐름이 중요하다.
1. 문자열 다루기 기본
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성되어 있는지 확인하는 문제다.
조건을 만족하면 True를 반환하고,
조건을 만족하지 않으면 False를 반환하면 된다.
예를 들어 s가 "a234"라면 문자가 포함되어 있으므로 False를 반환한다.
s가 "1234"라면 길이가 4이고 숫자로만 이루어져 있으므로 True를 반환한다.
입출력 예
s = "a234"
return = False
s = "1234"
return = True
문제 접근
이 문제는 두 가지 조건을 확인해야 한다.
첫 번째, 문자열의 길이가 4 또는 6인지 확인한다.
두 번째, 문자열이 숫자로만 이루어져 있는지 확인한다.
문자열의 길이는 len(s)로 확인할 수 있고,
숫자로만 이루어져 있는지는 s.isdigit()으로 확인할 수 있다.
길이 조건과 숫자 조건을 모두 만족해야 하므로, 두 조건을 함께 확인하는 것이 핵심이다.
풀이 코드
def solution(s):
answer = False
if len(s) == 4 or len(s) == 6:
if s.isdigit():
answer = True
return answer
# solution("1234")
코드 설명
answer = False
기본값을 False로 설정한다.
조건을 만족할 때만 True로 바꿔준다.
if len(s) == 4 or len(s) == 6:
문자열의 길이가 4 또는 6인지 확인한다.
if s.isdigit():
문자열이 숫자로만 이루어져 있는지 확인한다.
answer = True
길이 조건과 숫자 조건을 모두 만족하면 True를 저장한다.
풀이 정리
이 문제는 조건을 순서대로 확인하면 쉽게 풀 수 있다.
먼저 문자열의 길이가 4 또는 6인지 확인하고,
그다음 숫자로만 이루어져 있는지 확인하면 된다.
isdigit()을 사용하면 문자열 안의 문자가 모두 숫자인지 간단하게 확인할 수 있다.
처음에는 직접 문자를 하나씩 확인해야 하나 싶을 수 있지만, 파이썬에는 이런 기본 확인 함수가 준비되어 있다.
그래서 문제 상황에 맞는 함수를 알고 있으면 코드가 훨씬 간단해진다.
2. 행렬의 덧셈
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 위치에 있는 값을 서로 더하는 문제다.
두 개의 행렬 arr1, arr2를 입력받아, 같은 위치의 값을 더한 새로운 행렬을 반환하면 된다.
예를 들어 다음과 같은 두 행렬이 있다.
arr1 = [[1, 2], [2, 3]]
arr2 = [[3, 4], [5, 6]]
같은 위치의 값끼리 더하면 다음과 같다.
1 + 3 = 4
2 + 4 = 6
2 + 5 = 7
3 + 6 = 9
따라서 결과는 [[4, 6], [7, 9]]가 된다.
입출력 예
arr1 = [[1, 2], [2, 3]]
arr2 = [[3, 4], [5, 6]]
return = [[4, 6], [7, 9]]
arr1 = [[1], [2]]
arr2 = [[3], [4]]
return = [[4], [6]]
문제 접근
이 문제는 2차원 리스트를 다루는 문제다.
행렬은 리스트 안에 리스트가 들어 있는 구조이므로,
바깥 반복문으로 행을 이동하고, 안쪽 반복문으로 열을 이동하면 된다.
먼저 전체 결과를 담을 answer 리스트를 만든다.
그다음 각 행의 계산 결과를 담을 row 리스트를 만든다.
같은 위치에 있는 arr1[i][j]와 arr2[i][j]를 더해 row에 넣고,
한 행의 계산이 끝나면 row를 answer에 추가한다.
2차원 리스트는 행과 열을 나누어 생각하면 훨씬 이해하기 쉽다.
풀이 코드
def solution(arr1, arr2):
answer = []
for i in range(len(arr1)):
row = []
for j in range(len(arr1[i])):
row.append(arr1[i][j] + arr2[i][j])
answer.append(row)
return answer
# solution([[1, 2], [2, 3]], [[3, 4], [5, 6]])
코드 설명
answer = []
최종 결과 행렬을 담을 빈 리스트를 만든다.
for i in range(len(arr1)):
행의 개수만큼 반복한다.
여기서 i는 행의 위치를 의미한다.
row = []
현재 행의 계산 결과를 담을 빈 리스트를 만든다.
for j in range(len(arr1[i])):
현재 행 안에 있는 열의 개수만큼 반복한다.
여기서 j는 열의 위치를 의미한다.
row.append(arr1[i][j] + arr2[i][j])
두 행렬의 같은 위치에 있는 값을 더해서 row에 추가한다.
answer.append(row)
한 행의 계산이 끝나면 완성된 row를 최종 결과인 answer에 추가한다.
풀이 정리
이 문제는 2차원 리스트의 구조를 이해하는 것이 중요하다.
arr1[i]는 하나의 행을 의미하고,
arr1[i][j]는 i번째 행의 j번째 값을 의미한다.
같은 위치의 값을 더해야 하므로 arr1[i][j] + arr2[i][j] 형태로 계산한다.
행을 먼저 돌고, 그 안에서 열을 도는 중첩 반복문 구조가 핵심이다.
처음에는 리스트 안에 리스트가 있어서 복잡해 보이지만, 행과 열을 나누어 생각하면 풀이 흐름이 정리된다.
나의 간단 소감
- 오늘은 문자열 조건 확인 문제와 행렬 덧셈 문제를 풀었다.
문자열 다루기 기본 문제는 길이 조건과 숫자 조건을 함께 확인하는 문제다.
처음에는 문자가 숫자인지 하나씩 확인해야 하나 싶지만, isdigit()을 사용하면 훨씬 간단하게 해결할 수 있다.
문제를 풀 때 직접 구현하기 전에, 파이썬에 이미 제공되는 함수가 있는지 먼저 떠올려보는 것이 중요하다는 생각이 든다.
행렬의 덧셈 문제는 2차원 리스트를 다루는 연습 문제다.
리스트 안에 리스트가 들어가면 처음에는 조금 헷갈리지만, 행과 열로 나누어 생각하면 구조가 보인다.
특히 arr1[i][j]처럼 인덱스를 두 번 사용하는 방식이 중요하다.
첫 번째 인덱스는 행을 의미하고, 두 번째 인덱스는 열을 의미한다.
2차원 리스트 문제는 결국 바깥 반복문과 안쪽 반복문이 각각 무엇을 담당하는지 이해하는 것이 핵심이다.
오늘 문제들도 엄청 어려운 알고리즘이라기보다는 기본 문법을 정확히 쓰는 연습에 가깝다.
그래도 이런 기본 문제가 쌓여야 나중에 더 복잡한 문제를 풀 때 덜 막힐 것 같다.
앞으로도 문제를 보면 바로 코드부터 쓰기보다, 조건을 먼저 나누고 자료 구조가 어떻게 생겼는지 확인한 뒤 코드로 옮기는 습관을 들여야겠다.
+(프로젝트 소식) 오늘은 스토리와 인사이트를 완료하고 다같이 발표용 피피티 제작과 보고서용 피피티 제작을(발표 영상 녹화 연습도 하며) 시작했다. 미리 나와 부팀장님이 피피티 뼈대를 만들어 놓아서, 사실상 중간 내용(본론과 결론)만 넣으면 완료였다. 미리미리 해놓으니까 일들이 수월하게 진행되는 것 같다. 하지만 결과가 잘 나와야 제일 중요한 것 아니겠는가ㅋㅋㅋㅋ 확실히 학생때는 열심히만하면 되는 느낌이라면 지금은 열심히 하는 사람은 이미 너무 많아서 잘해야 되는데, 잘하는게 확실히 쉽진 않은 것 같다. 부트캠프에서 이런걸 느끼게 되다니,,,, 너무 좋은 경험이다...
'내일배움캠프' 카테고리의 다른 글
| [본캠프] 데이터기반 QA/QC 부트캠프 24일차 (1) | 2026.06.15 |
|---|---|
| [본캠프] 데이터기반 QA/QC 부트캠프 23일차 (0) | 2026.06.12 |
| [본캠프] 데이터기반 QA/QC 부트캠프 21일차 (0) | 2026.06.10 |
| [본캠프] 데이터기반 QA/QC 부트캠프 20일차 (0) | 2026.06.09 |
| [본캠프] 데이터기반 QA/QC 부트캠프 19일차 (0) | 2026.06.08 |