7월에 일어난 일들

7월에 있었던 일들을 간단하게 작성해보려고 합니다.

Solved.ac에서 제공하는 Class 취득

Class 4는 손쉽게 얻을 수 있었지만, 골드 난이도에서부터 어렵다는 느낌이 들기 시작했습니다. 골드 문제부터는 알고리즘을 활용하는 문제에 더해서 알고리즘을 응용해야 하는 문제가 나오는데, 이런 경우에 헤메는 부분이 있었습니다.

또 파이썬이라는 언어의 문제도 있었습니다. 예를 들어서 함수 스택의 오버로드가 크고, 스택 크기도 작아서 재귀 방식으로 구현을 하거나 백트래킹을 할 때 함수 스택을 이용하지 않고 deque 등을 이용해서 구현을 해야 했습니다. 배열을 이용하거나 비트마스킹을 하는 것도 쉽지 않다고 생각합니다. 반면 여러 저수준의 구현을 할 필요 없이 로직 그 자체에만 집중할 수 있던 점은 좋았습니다.

일단 토요일까지 1문제를 추가로 해결해보고, 남은 한 달 동안에는 4레벨과 5레벨에 준하는 골드 문제를 많이 풀어보려고 합니다.

프로그래밍 관련 서적

대학 도서관에서 여러 책들을 빌려 읽었습니다.

다이내믹 프로그래밍 완전 정복 : 빠르고 우아한 상향식 문제 풀이법

가장 큰 문제는 다이나믹 프로그래밍을 어떻게 해야 하는지 이해하지 못했다는 것입니다. 물론 몇몇 문제에 대해서는 단순하게 암기를 해서 해결책을 알고 있던 것도 있었습니다. 하지만 그렇게 해서는 조금만 문제를 비틀어도 해결할 수 없는 것입니다. 이 책을 읽고, 다이나믹 프로그래밍을 이용하는 문제를 어떻게 접근하고, 어떻게 해결할지에 대한 힌트를 얻을 수 있었습니다.

먼저 재귀 방식으로 문제를 정의해보면 반복되는 부분 구조도 얻을 수 있습니다. 물론 이 상태에서는 하위 구조를 중복으로 호출하기 때문에 비효율적인데, 문제의 호출 결과를 ‘어딘가’에 저장해두자는 것이 기본적인 아이디어입니다. 하향식으로 해결하면 꼬리 재귀가 되고 상향식으로 해결하면 DP가 되는 것입니다.

보통은 2차원 배열을 많이 쓰는데, 그 이유는 많은 문제에서 2개의 변수로 문제의 부분을 정의할 수 있기 때문이었습니다. 문제에 따라 다른 자료구조도 이용할 수 있어야 되겠습니다.

고전 컴퓨터 알고리즘 인 파이썬

고전적인 컴퓨터 알고리즘을 파이썬으로 서술한 책입니다. 제 목적에는 잘 맞지 않았던 것 같았지만, 나름대로 좋은 책이라고 생각합니다. 다만 PL 문제풀이에 도움이 그닥 되지 않았을 뿐이지…

한 권으로 읽는 컴퓨터 구조와 프로그래밍

이런게 어떻게 가능한 것인지는 모르겠지만 조너선 스타인하트가 또다시 해냈습니다. 이 책은 기본 프로그래밍 / 논리회로 / 컴퓨터 구조 / 시스템 프로그래밍 / 자료구조 및 알고리즘 / 기타 유용한 주제들이라는 엄청나게 넓은 범위를 개괄적으로 모두 서술한 책입니다. 컴공 5학년이 된 시점에서 봤을 때에는 CLRS / CSAPP 등등에서 배운 내용을 정말 기본적인 부분만 뽑아서 적어두었다는 느낌이 강합니다.

비전공자도 재미있게 읽을지는 모를 일이지만, 저학년 전공생들이나 (고수준 프로그래밍만이 아닌) 전반적인 분야에 관심이 있는 사람이면 재미있게 읽어볼 수 있을 듯 싶습니다.

게임 기획

이쪽은 거의 진행하지 못했습니다. 떠오르는 아이디어도 얼마 없었거니와, 이 시국에 누군가와 만나서 게임 개발을 한다는 것이 그리 적절한지에 대해서도 의문이 들었기 때문입니다. 동아리에서도 딱히 개발을 진행하고 싶은 아이디어도 보이지 않아서 일단은 쉬기로 했습니다. 2학기나 내년 1학기에는 게임의 이해나 시리어스 게임 등을 들어볼 수 있겠죠.

책읽기

밀리의서재 서비스를 1달 무료 신청해서 책을 읽어봤습니다. 생각보다 뷰어 품질도 나쁘지 않았고(특히 윈도우 앱이 나쁘지 않았습니다. Moon+ reader급으로 좋지는 않았지만 일단 렉 없이 책 내용을 잘 보여주었습니다) 책 라인업도 나름 폭넓은 편이라 10여권 정도를 읽을 수 있었습니다. 다만 이를 위해 한 달에 만 원을 쓸 가치가 있는지에 대해서는 아직까지는 잘 모르겠습니다. 중앙도서관 대출이 가능한 상황에서 조금만 발품을 파는 것이 낫지 않겠는가라는 고민과 함께, 그래도 가방 무게도 줄고 책을 조금이나마 더 읽으면 좋지 않겠는가라는 생각도 듭니다. 일단은 리디셀렉트도 한 달간 체험해보기로 했습니다.

또 청소년 SF 시리즈인 Animorphs 영문판 전권을 어디서 구해서, 영어 공부 겸으로 읽고 있습니다. Moon+ Reader 세팅도 겸해서 보고 있는데, 나름 시간 때우기 용으로 나쁘지 않았습니다.

크롬북 세팅

이건 아예 새로 글을 올려야 할 정도로 분량이 커질 것 같아서 나누려고 합니다. 일단은 서피스 3 (프로가 아닌 그냥 3)에서도 몇몇 사소한 기능을 제외하면 잘 돌아가고, 인터페이스도 터치가 네이티브로 지원되는 크롬북 사양이라 훨씬 사용성이 좋습니다. 한영키나 프로그램 설치 이슈 등이 존재하지만 안드로이드와 리눅스를 동시에 원활하게 지원하는 운영체제를 선택하자니 다른 선택지가 없습니다. 태블릿을 또 사기도 뭐하고요.

수강신청

이건 다음주부터 준비를 시작할 예정입니다. 대부분의 강의는 전공 과목으로 채워질 예정이고, 사실 다음학기면 졸업 학점은 거의 다 채워지게 됩니다. 그래도 1학기에만 열리는 몇 개 과목들이 있어서 그 과목들을 듣고 졸업하고자 합니다.

인턴십 / 코딩테스트

겨울방학에는 이런 것도 조금 도전해보려고 합니다. 앞으로 남은 한 달간 실력을 더 쌓아서, 인턴십에 합격할 수 있을만한 실력이 되었으면 좋겠습니다.

*****
긍정적인 영향을 주는 사람이 됩시다
Served using home raspberry pi 3 B+
☕ Pudhina theme by Knhash 🛠️