1. 오늘 학습 목표

2. 오늘 학습 한 내용
오늘의 코드카타
오늘은 코드카타 문제 2개를 풀었다.
이번 문제들은 문자열 인덱싱, 슬라이싱, 반복문, 조건문을 연습하기 좋은 문제다.
코드 자체는 길지 않지만, 문자열을 어떻게 자르고 반복되는 규칙을 어떻게 코드로 옮기는지가 핵심이다.
1. 가운데 글자 가져오기
문제 설명
단어 s의 가운데 글자를 반환하는 함수를 만드는 문제다.
단어의 길이가 홀수라면 가운데 글자 1개를 반환하고,
단어의 길이가 짝수라면 가운데 두 글자를 반환하면 된다.
예를 들어 "abcde"는 길이가 5인 홀수 문자열이므로 가운데 글자인 "c"를 반환한다.
"qwer"는 길이가 4인 짝수 문자열이므로 가운데 두 글자인 "we"를 반환한다.
입출력 예
s = "abcde"
return = "c"
s = "qwer"
return = "we"
문제 접근
이 문제의 핵심은 문자열의 길이를 구한 뒤, 가운데 인덱스를 찾는 것이다.
문자열의 길이는 len(s)로 구할 수 있고, 가운데 위치는 len(s) // 2로 구할 수 있다.
여기서 /가 아니라 //를 사용하는 이유는 인덱스에는 정수가 필요하기 때문이다.
/를 사용하면 결과가 소수 형태로 나오기 때문에 문자열 인덱스로 사용할 수 없다.
문자열 길이가 홀수일 때는 가운데 인덱스 하나만 가져오고, 짝수일 때는 가운데 기준 앞뒤 두 글자를 슬라이싱으로 가져오면 된다.
풀이 코드
def solution(s):
answer = ''
center = len(s) // 2
if len(s) % 2 == 1:
answer = s[center]
else:
answer = s[center-1:center+1]
return answer
solution("abcde")
코드 설명
center = len(s) // 2
문자열의 가운데 위치를 구한다.
if len(s) % 2 == 1:
문자열 길이가 홀수인지 확인한다.
answer = s[center]
홀수라면 가운데 글자 1개를 가져온다.
answer = s[center-1:center+1]
짝수라면 가운데 두 글자를 가져온다.
풀이 정리
처음에는 가운데 글자를 가져온다고 해서 단순히 len(s) / 2만 생각할 수 있다.
하지만 파이썬에서 인덱스는 정수로 접근해야 하므로 //를 사용해야 한다.
또한 짝수 길이 문자열은 가운데가 정확히 하나로 떨어지지 않는다.
그래서 center-1:center+1처럼 슬라이싱을 사용해서 가운데 두 글자를 가져온다.
이 문제는 len(), 인덱싱, 슬라이싱을 같이 연습하기 좋은 문제다.
2. 수박수박수박수박수박수?
문제 설명
길이가 n이고, "수박수박수..."와 같은 패턴을 유지하는 문자열을 반환하는 문제다.
예를 들어 n이 3이면 "수박수"를 반환하고,
n이 4이면 "수박수박"을 반환하면 된다.
입출력 예
n = 3
return = "수박수"
n = 4
return = "수박수박"
문제 접근
이 문제는 반복문을 사용해서 문자열을 하나씩 더해가면 된다.
인덱스가 짝수일 때는 "수"를 추가하고,
인덱스가 홀수일 때는 "박"을 추가하면 된다.
즉, i % 2를 이용해서 짝수 번째에는 "수", 홀수 번째에는 "박"을 붙이는 방식이다.
풀이 코드
def solution(n):
answer = ''
for i in range(n):
if i % 2 == 0:
answer += '수'
else:
answer += '박'
return answer
solution(3)
코드 설명
for i in range(n):
0부터 n-1까지 반복한다.
if i % 2 == 0:
현재 인덱스가 짝수인지 확인한다.
answer += '수'
짝수 번째라면 "수"를 추가한다.
answer += '박'
홀수 번째라면 "박"을 추가한다.
풀이 정리
이 문제는 규칙을 찾는 것이 중요하다.
문자열은 "수", "박"이 번갈아 반복되기 때문에 인덱스 번호가 짝수인지 홀수인지만 확인하면 된다.
range(n)으로 n번 반복하면서 짝수 번째에는 "수", 홀수 번째에는 "박"을 더해주면 원하는 패턴을 만들 수 있다.
반복문과 조건문을 함께 사용하는 기본 연습 문제로 보기 좋다.
나의 소감
오늘 푼 코드카타 문제는 난이도가 엄청 어렵다기보다는, 파이썬의 기본기를 다시 확인하는 느낌에 가깝다.
특히 문자열 문제는 코드가 짧아 보여도 인덱스와 슬라이싱을 정확히 이해하지 못하면 은근히 헷갈린다.
가운데 글자 가져오기 문제도 처음에는 단순히 길이를 2로 나누면 된다고 생각하기 쉽지만, 실제로는 인덱스에 정수값이 들어가야 하기 때문에 //를 사용해야 한다.
이런 작은 문법 차이가 결과를 완전히 다르게 만들 수 있다는 점이 중요하게 느껴진다.
수박수박 문제는 반복문과 조건문을 이용해 규칙을 만드는 문제다.
i % 2를 사용해서 짝수와 홀수를 구분하고, 그에 맞게 "수"와 "박"을 붙이는 방식이 깔끔하다.
문제를 풀 때는 무작정 코드를 쓰기보다, 먼저 반복되는 규칙을 찾는 것이 중요하다는 생각이 든다.
오늘 문제를 풀면서 느낀 건, 코드카타는 어려운 알고리즘을 외우는 것보다 기본 문법을 자연스럽게 쓰는 연습에 더 가깝다는 점이다.
len(), range(), %, 인덱싱, 슬라이싱처럼 자주 쓰는 문법을 문제 안에서 계속 사용하다 보니 조금씩 손에 익는 느낌이 든다.
아직은 문제를 보자마자 바로 코드가 떠오르지는 않지만, 풀이 과정을 정리하면서 내가 어떤 생각으로 접근하는지 다시 확인할 수 있다.
앞으로도 문제를 풀 때 조건을 먼저 정리하고, 규칙을 찾고, 그다음 코드로 옮기는 방식을 계속 연습해야겠다.
그리고 오늘 팀 프로젝트가 시작해서 너무 자세한 TIL을 작성하긴 쉽지 않았다. 프로젝트 발표를 마치면 프로젝트도 보여드리겠다ㅎㅎ
'내일배움캠프' 카테고리의 다른 글
| [본캠프] 데이터기반 QA/QC 부트캠프 21일차 (0) | 2026.06.10 |
|---|---|
| [본캠프] 데이터기반 QA/QC 부트캠프 20일차 (0) | 2026.06.09 |
| [본캠프] 데이터기반 QA/QC 부트캠프 18일차 (1) | 2026.06.05 |
| [본캠프] 데이터기반 QA/QC 부트캠프 17일차 (0) | 2026.06.04 |
| [본캠프] 데이터기반 QA/QC 부트캠프 16일차 (1) | 2026.06.02 |