Weekly I Learned/2022's(7. ~ 12.) WIL

2022년 12월 4주차(12/26 ~ 12/30) Weekly I Learned "Good Bye 2022, Hello 2023!!"

ikjo 2023. 1. 2. 01:10

지난 한 주 되돌아보기

정신없었던 마스터즈 코스를 수료한지 얼마 되지 않은 것 같은데, 수료한지도 벌써 6개월이라는 시간이 흘렀다. 아울러, 2022년도 모두 지나 이제는 2023년이다. 😂 전 직장에서 근무할 때도 바빴었던 만큼 1년 1년이 정말 빠르게 간다는 것을 이미 체감하고 있었지만, 소프트웨어를 공부하는 1년 1년 역시 정말 빠르게 간다는 것을 몸소 느끼고 있다. 🤣 (나이가 들수록 체감상 시간이 더 빨리 흐르는 걸까? 👀) 그리고 한 해가 가기 전 다 하지 못했었던 학습들을 부리나케 하느라 연말은 더더욱 시간이 빨리 흘렀던 것 같다. 아무쪼록 2022년의 마지막 주의 WIL을 작성하며 2022년을 마무리하고자 한다.

 

'쉽게 배우는 운영체제'를 드디어 완독했다..! 😅

마스터즈 코스 수료를 하면서 학습 필요를 느꼈었던 것들 중 하나는 CS 공부 특히, 그 중에서도 '운영체제' 부분이었다. 나는 마스터즈 코스를 수강하기 전에도 운영체제를 제대로 학습해본적이 없었고, 마스터즈 코스 중에도 과정을 따라가기 급급해 CS를 제대로 학습하지 못했었다. 💦 그래서 수료 이후에 운영체제 학습에 비중을 좀 더 두기로 하였고, 한빛미디어 출판의 '쉽게 배우는 운영체제'라는 기술 서적을 선택했다.

 

해당 책은 제목 그대로 운영체제를 처음 공부하는 나에게도 정말 직관적으로 쉽게 이해할 수 있도록 다양한 용어들과 기술들에 대해 설명해주는 책이었다. 특히, 비유 예시들을 통해 한결 편하게 기술을 직관적으로 이해하는데 많은 도움을 받을 수 있었다. 아울러, 마스터즈 코스 중 중간중간 학습했었던 짧막한 운영체제 관련 지식들 역시 해당 내용을 이해하는데 많은 도움이 되었던 것 같다.

 

비록 중간에 코딩테스트니, 면접이니 하면서 운영체제 학습 흐름이 깨지긴 했지만...😭 (운영체제 학습의 우선순위가 뒤로 밀리곤 했었다. 💦) 한해가 가기 전 특히, SSAFY에 입과하기 전까지 해당 책을 완독하고싶은 욕심이 있었기에 SSAFY 합격 후 부리나케 해당 내용들을 학습해나갔었다. 😅

 

당연히 이번에 이 책을 완독했다고 운영체제에 대해 제대로 이해했다고 말할 순 없다. 해당 내용들을 여러번 반복해서 봐야겠다는 생각이 들었으며, 좀 더 깊은 지식을 위해선 추가적인 서적(공룡책 등)을 통한 학습이 필요하리라 생각이 든다.

 

SWEA 알고리즘 문제 풀이 시작!

2022년간 알고리즘 문제 풀이를 위해 내가 주로 이용했었던 서비스는 백준과 프로그래머스였다. 해당 서비스를 이용하면서 다양한 문제들을 접할 수 있었고 알고리즘 역량을 많이 기를 수 있었다. 그리고 이번에 SSAFY 9기를 준비하면서 SWEA 서비스를 처음으로 이용해봤는데, 백준과 마찬가지로 입출력을 이용하는 방식이었으며 😭 해당 서비스 내에서도 정말 많은 문제들이 있었다. 👍 (15000 문제 이상)

 

앞으로 SSAFY 과정을 하면서 왠지 모르게 SWEA 서비스를 많이 접하게 될 것 같다. 아직 입과도 하기 전인데, 벌써부터 풀어야할 알고리즘 문제들이 올라와 SWEA 알고리즘 문제들을 풀었다. 😅 개인적으로 나에겐 적정 수준의 난이도였기에, 해당 문제를 풀면서 나의 부족했었던 점을 파악하고 좀 더 보완할 수 있었던 것 같다. 삼성에서는 채용 시 SWEA에서 진행하는 SW 역량테스트 점수가 있으면 가점(?)이 있다고 하는데, 이번 기회에 SW 역량테스트에 도전해보는 것도 나쁘지 않을듯 싶다. 👀

 

모듈러 연산과 페르마의 소정리에 대해 알아보았다!

지난 12월 4주차 중 백준 알고리즘 문제들을 풀면서 '이항 계수 3'와 'Σ' 라는 문제를 풀면서 모듈러 연산에 대해 좀 더 이해하고 페르마의 소정리의 개념에 대해 알 수 있었다.

 

DP 등의 알고리즘 문제를 푸는 경우 굉장히 큰 수를 특정 값(마찬가지로 굉장히 큰)으로 나누었을 때 나머지 값으로 표현하는 경우가 많다. 그 과정에서 모듈러 분배법칙을 이용하는 경우가 있는데, 앞서 언급한 문제들의 경우 나눗셈 연산이 필요했기에 모듈러 분배법칙을 바로 적용할 수가 없었다. (모듈러의 분배법칙은 나눗셈에 대해선 적용되지 않는다.)

이때 어떤 수로 모듈러 나눗셈을 하고자 할 때는 그 수의 곱셈에 대한 역원을 찾고 그 역원을 곱해주는 것으로 나눗셈을 대신 수행할 수 있는데, 이를 다시 페르마의 소정리를 통해서 지수가 양수인 거듭제곱 형태로 바꾸는 것이었다.

 

앞선 문제들의 경우 결국 수학적 원리를 이용하여 문제를 해결할 수 있는 유형들인데, 개인적으로 수학을 많이 좋아하지는 않지만, 해당 문제들을 풀면서 (증명까지는 아니지만...💦) 수학적 원리를 적용함으로써 해결되는 나름의 재미를 느낄 수 있었다. 아울러, 이를 스터디원들과 같이 공유하면 좋을 것 같다는 생각이 들어 스터디 시간에 발표하는 시간도 가졌다. 다만, 내가 처음 이 내용들을 접했을 때 매우 어려웠듯이, 스터디원들 역시 다소 난색한 표정을 지었다. 😭 (다음에는 좀 더 가벼운 내용으로 발표를 하기로 했다...👀)