낮에는 운동하고, 부트캠프 수업 듣고, 멘토링하고, 기출문제까지 풀면서 하루를 보냈다. 그중에서도 오늘은 부트캠프 첫 멘토링이 있었던 날이다. 서로 소개하는 시간을 가졌는데, 나도 모르게 iOS 이야기를 계속 꺼내버려서 조금 아쉬운 시작이었다. 마음속으로는 계속 AI 엔지니어가 되고 싶다는 목표를 갖고 있는데, 무언가를 설명할 때마다 익숙한 iOS 경험 쪽으로 말이 새는 걸 느꼈다.
| 문제 | [PCCP 기출문제] 1번 / 동영상 재생기 |
| 플랫폼 | 프로그래머스 |
| 핵심 요구사항 | 재생 위치를 10초 전/후로 이동시키되, 오프닝 구간에 걸리면 자동으로 오프닝이 끝나는 위치로 이동시키기 |
def to_sec(t):
m, s = map(int, t.split(":"))
return m * 60 + s
def to_str(sec):
m, s = divmod(sec, 60)
return f"{m:02d}:{s:02d}"
def solution(video_len, pos, op_start, op_end, commands):
v = to_sec(video_len)
s = to_sec(pos)
op_s = to_sec(op_start)
op_e = to_sec(op_end)
for command in commands:
if op_s <= s <= op_e:
s = op_e
if command == 'next':
s = min(s + 10, v)
elif command == 'prev':
s = max(s - 10, 0)
if op_s <= s <= op_e:
s = op_e
return to_str(s)
video_len, pos, op_start, op_end는 다 "mm:ss" 형식이라, 매번 문자열로 비교하면 번거롭다. 처음에 전부 초 단위 정수로 바꿔서 다루기 쉽게 만든다.def to_sec(t):
m, s = map(int, t.split(":"))
return m * 60 + s
v = to_sec(video_len)
s = to_sec(pos)
op_s = to_sec(op_start)
op_e = to_sec(op_end)
s)가 오프닝 구간(op_s ~ op_e) 안에 들어있는지부터 확인한다. 들어있으면 오프닝이 끝나는 위치로 강제로 이동시킨다. 그다음 next/prev 명령에 따라 10초를 더하거나 뺀다.for command in commands:
if op_s <= s <= op_e:
s = op_e
if command == 'next':
s = min(s + 10, v)
elif command == 'prev':
s = max(s - 10, 0)
next로 이동했는데 영상 길이(v)를 넘어가면 끝 위치로, prev로 이동했는데 0초보다 작아지면 0초로 맞춘다. min/max로 한 줄이면 처리 가능하다.prev로 이동했는데 그 자리가 마침 오프닝 구간 안인 경우). 그래서 루프가 다 끝난 다음에도 한 번 더 체크해서, 오프닝 안이면 끝 위치로 보내줘야 정답이 맞는다.if op_s <= s <= op_e:
s = op_e
def to_str(sec):
m, s = divmod(sec, 60)
return f"{m:02d}:{s:02d}"
return to_str(s)
commands를 딱 한 번만 순회하면서 위치 계산과 오프닝 체크를 동시에 끝낼 수 있다. 전체 시간복잡도는 O(len(commands))가 된다.부트캠프 이후 첫 멘토링을 진행했다. 서로 소개하는 시간에 왠지 모르게 iOS 이야기를 많이 꺼내버렸다. 머리로는 AI 엔지니어가 되고 싶다는 목표를 계속 갖고 있는데, 막상 뭔가를 설명하려고 하면 익숙한 iOS 쪽 경험으로 말이 자꾸 새서, 약간 아쉬운 시작이었다.
그래도 궁금했던 것 — "요즘 트렌드는 어디서 얻으세요?" — 라는 질문에 멘토님께서 GeekNews를 추천해주셨다. 시간 날 때마다 읽어보는 습관을 들여야겠다는 생각이 들었다.
"멘토님께서 사용하시는 에디터는 어떤 거예요?"라는 질문도 드려봤는데, Zed 에디터를 많이 사용하신다고 하셨다. 깔끔하게 쓸 수 있고 가벼우면서, Rust 언어로 만들어져 있어서 최적화가 잘 되어 있는 게 좋다고 하셨다. 나중에 한번 써봐야겠다는 생각이 들었다.
짧은 시간이었지만 앞으로 멘토링 시간의 방향성에 대해 이야기했고, 다음 주는 앞으로 설치할 프로그램들의 기본 환경 설정을 같이 해보기로 했다. 멘토링 시간에 많은 걸 얻어가야 한다는 욕심이 있었는데, 그건 좀 과한 욕심이었던 것 같다. 멘토님께서 이 시간은 가볍게 들을 수 있는 시간이지만 그래도 얻어갔으면 하는 바람이 있다고 하셨다. 욕심을 조금 덜고, 거만하지 않은 자세로 수업을 듣고 따라가야겠다고 느꼈다.
- 프로그래머스 문제 풀기
- 부트캠프 수업 참석
- 운동
'AI' 카테고리의 다른 글
| [부트캠프 10일차] 예측이 틀렸을 때 - 손실 함수부터 K-폴드까지 (0) | 2026.07.15 |
|---|---|
| [부트캠프 8일차] 선형대수학 (1) | 2026.07.13 |
| [부트캠프 3일차] 시간복잡도와 DataFrame 전처리 정리 (0) | 2026.07.06 |
| [부트캠프 2일차] 파이썬 기초부터 OOP까지 (0) | 2026.07.03 |
| [부트캠프 1일차] 코드잇 스프린트 시작 — 데이터란 무엇인가 (1) | 2026.07.02 |
