지난 한 주 되돌아보기
벌써 9월이다. 🍂 작년에 위염으로 한동안 학습을 중단하고 다시 마음을 다잡고 학습을 시작했을 때가 9월 즈음이었는데, 시간이 정말 빠르다. 요즘에는 한 주 한 주 어떤 성과를 내겠다는 마음 보다도 '꾸준히'만 하자는 마음으로 꾸역꾸역(?) 학습을 하고있다.
정렬 알고리즘을 파헤쳐보다!
사실 자바 프로그래밍을 하면서 기본 정렬 API(Collections 클래스의 sort 메서드, Arrays 클래스의 sort 메서드)로 컬렉션이나 배열을 정렬해왔었기에 버블 정렬, 선택 정렬, 삽입 정렬 등 정렬의 원리나 구현에 대해 학습해야 할 필요성을 느끼지 못했었는데, 간혹 면접 때 이와 관련한 질문이 나온다는 얘기를 듣고 이에 대해 정리해보고싶다는 생각이 들었다.
어떻게 보면 반강제적(?)인 상황으로 학습하게 된거긴 하지만 이번에 정렬 알고리즘에 대해 학습해보면서 나름 유익했다고 느꼈다. 뭔가 당연하게 사용하고 있었던 정렬 API들이 어떠한 변천사(?)를 거쳐 완성되었다는 것을 생각해볼 수 있었고 각 정렬 알고리즘의 원리 및 특성 학습과 구현 과정을 통해 사고력 향상에 많은 도움이 되었던 것 같다.
이전에 어려웠던 알고리즘 문제 다시 풀어보기!
알고리즘 문제를 풀다보면, 어떤 문제는 접근 방법이 금방 떠오르고 쉽게 푸는 문제가 있는 반면, 어떤 문제는 오랜 시간 고민해도 접근 방법 조차도 떠올리기 힘들었던 문제들도 많았다. 이런 문제들 같은 경우에는 결국 다른 사람들의 풀이를 참고하게 되는데, 그 순간에는 "아~ 이렇게 푸는거네"하고 넘어갔지만, 나 스스로 풀이하지 못했기 때문에 완벽하게 이해되지 않은 채로 지나가게 되는 경우가 많았다.
때문에 이전에 다른 사람들의 풀이를 참고하여 풀었던 문제들에 다시 재도전하는 시간을 가졌다. 아울러 이전에 풀었던 문제들 중 당시 너무 비효율적으로 풀었다고 생각한 문제들에 대해서도 다시 문제를 풀어보고 리팩토링하기도 했다.
자바의 인터페이스를 파헤쳐보다!
자바 스터디 8주차 과제의 주제는 '인터페이스'였다. 아직 자바 프로그래밍 경험이 부족한 탓에 추상 클래스를 통해 다형성을 구현한 경험은 있었으나, 인터페이스를 통해 다형성을 구현한 경험은 없었던 것 같다. 그랬었기에 뭔가 개념적으로는 인터페이스에 대해 얼추 알고는 있었지만, 경험에서 우러나오는(?) 지식이 없었기에 이번에 스터디를 통해 학습하면서 인터페이스에 대해 정말 많이 배울 수 있었다.
(번외) 영화 '이미테이션 게임'을 재밌게 보다!
우연히 '앨런 튜링'이라는 영국의 컴퓨터 과학자(수학자, 암호학자, 철학자 등 겸직)에 대해 알게 되어 관심을 갖던 중 이와 함께 '이미테이션 게임'이라는 영화에 대해 알게되었다. 이 영화는 앨런 튜링이 2차 세계대전에서 독일군의 암호 '에그니마'를 해독하는 과정을 다루는 영화로서, 앨런 튜링의 천재성과 함께 앨런 튜링의 고달픈 삶(?)을 다루는 내용이었다.
당시에는 운영체제는 커녕 최초의 컴퓨터라고 불리우는(공식적인 최초는 아니다) '에니악'이라는 컴퓨터가 나오기도 이전의 상황이었는데, 앨런 튜링은 암호 해독을 위해 지금은 콜로서스라고 불리우는(영화에서는 '크리스토퍼'라고 불린다.) 컴퓨터를 고안하고 동료들과 함께 암호 해독을 위한 사투가 벌어진다. (말로만 듣던 진공관으로 구성된 컴퓨터가 영화에 주연급으로 등장한다.)
예상했듯이 '앨런 튜링'은 말 그대로 천재였다. 영화에서는 다소 공감 능력(?)이 떨어지는듯 보이긴 했지만, 일반인들은 상상조차 하기 힘든 문제들을 해결해나간다. 1966년부터는 그의 이름을 따 컴퓨터 과학 분야의 노벨상으로 불리는 튜링상을 매년 컴퓨터과학(전산학) 분야에 업적을 남긴 사람에게 시상한다고 한다. 나에게 익숙한 이름의 수상자로는 에츠허르 데이크스트라(다익스트라 알고리즘 등), 팀 버너스리(WWW) 등이 있었다.
아무쪼록 영화를 보는 내내 앨런 튜링의 천재성과 활약에 감탄하면서 보다가 결말에 앨런 튜링의 비극적(?)인 운명에 다소 안타까운 마음이 들었다. 🤣 이 영화는 사실을 기반으로 한 영화라는데, 앨런 튜링이 좀 더 오랜 시간 컴퓨터과학 연구에 몰두할 수 있었다면 지금의 IT 산업이 어떻게 바뀌어 있을까하는 생각도 든다.
가끔 이런 IT 관련된 영화를 보는 것도 나름 학습하는데 활력을 불어넣어주는 것 같다. 👍
'Weekly I Learned > 2022's(7. ~ 12.) WIL' 카테고리의 다른 글
2022년 9월 3주차(9/19 ~ 9/23) Weekly I Learned "Keeping at it!!" (2) | 2022.09.26 |
---|---|
2022년 9월 2주차(9/12 ~ 9/16) Weekly I Learned "추석 연휴의 여파 극복하기" (2) | 2022.09.19 |
2022년 8월 5주차(8/29 ~ 9/2) Weekly I Learned "일희일비 하지 않기" (0) | 2022.09.05 |
2022년 8월 4주차(8/22 ~ 8/26) Weekly I Learned "Java와 알고리즘 기초 탄탄하게 학습하기" (0) | 2022.08.29 |
2022년 8월 3주차(8/15 ~ 8/19) Weekly I Learned "뚜벅뚜벅 걸어가기" (2) | 2022.08.22 |