오늘 해결한 문제는 두 문제다. 친구가 선별한 문제(이하 정인셋)인데, '구간 합 구하기(11660)' 과 '칸토어 집합(4779)'였다. '구간 합 구하기'는 비교적 수월하게 풀었다. DP를 이용해서 합들을 더해준 시작 값 이전의 값들을 제거해주는 방식이였다. 하지만 '칸토어 집합'문제는 굉장히 많은 시간이 걸렸다. Divide and conquer 문제였는데, 역시 많이 미숙했다. 문제를 읽고 그대로 생각해서 문자열을 생성하고, 가운데를 지워주는 것을 재귀로 구현하였는데, 시간초과가 났다. 수정하면 제대로 동작할지도 모르지만 다른 풀이를 들었을 때 내 풀이가 좋은 풀이는 아니라는 것을 깨달았다.
다른 풀이는 같은 재귀지만, 배열을 미리 만들어서 가운데를 제거하는 것이 아닌 초기값에서 계속 계산해주며 결과값 배열을 생성해주는 형태였다. 처음엔 왜 이 풀이가 Divide and conquer 문제인지 이해가 안됐는데, (이전 형태는 'Z' 문제나 '색종이 만들기' 문제랑 비슷하게 여겼다.) 이 풀이를 알려준 친구가 '하노이 탑'과 유사한 형태라고 설명했고 그제서야 이해했다. 시간복잡도도 현저히 낮았고 코드도 깔끔해졌다.
이번 주차의 남은 과제는 대표적으로 CSAPP 책을 읽고 토론하는 것과, 개념을 다시 숙지하는것, git에 올리는 것이 남았다. 내일 친구의 rbtree가 완성되면 개인 git과 팀 git에 commit하고, 각자 CSAPP책을 읽고 오후에 토론을 하기로 했다. 마무리로 Velog에 내가 구현한 rbtree를 다시 정리하면 이번 주차는 잘 마무리 할 수 있을 것 같다.
앞으로 어떤 길을 걸어야할지, 내가 어떤 길을 걷게 될지가 너무 고민이다. 전자공학과를 전공했고, 임베디드 개발 경험이 있고, 물론 흥미도 있지만.. AI 쪽으로 마음이 기운다. 소거법으로 따진다면 확실하게 프론트엔드는 아니고.. 백엔드는 취업을 위해서 공부한 것이지 내가 진정으로 원하는 직무는 아니라고 생각한다. 내 길을 확실히 정하고 심도있게 공부해보고 싶은 마음이다. 친구가 추천해준 유투브도 재밌던데 이것 저것 찾아보면서 신중하게 결정해야겠다.
즐겨하던 게임회사에서 채용연계형 인턴쉽 공고가 열렸다. 하지만 포트폴리오가 필수인데 난 게임관련 포트폴리오가 없다... 흥미로워서 지원해보려 했는데 약간 낙담했다. 하지만 그것도 잠시 현재 정글 협력사인 VoyagerX 에 대해 알아보니 굉장히 매력적으로 다가왔다. 홈페이지에 역량을 요구하는 글이 있었는데, 뭔가 공부할 것을 제시해주는 기분이였다. 욕심이 났다.
그래서 그런가 이런저런 생각도 많고 걱정도 많아졌다.
미니 티타임을 가졌다. 꿀맛 ദിᐢ. .ᐢ₎
왜니만먹어