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

2022년 8월 1주차(8/1 ~ 8/5) Weekly I Learned "알고리즘과 긴밀했던 한 주"

ikjo 2022. 8. 8. 04:17

지난 한 주 되돌아보기

벌써 8월이다. 마스터즈 코스를 수료했으닌까 당분간은 휴식을 취해도 되겠지라는 핑계가 무색할만한 시기가 온 것 같다. 지난 한 달(7월)을 되돌아 보면 하루하루를 보내면서 "그래도 6개월 고생했으닌까 이 정도는 뭐"하는 마음으로 학습에 임했었던 것 같다. 이제는 다소 안일한(?) 생각은 접어두고 학습에 몰입해야할 시기가 오지 않았나 싶다.

 

8월의 첫 주간 학습했었던 것들을 되돌아 보면 사실상 '자바 기초 학습'과 '알고리즘 학습'으로 나눌 수 있을 것 같다. 나 같은 경우에는 어떤 하나에 꽂히면 다른 것에 잘 손이 안가는, 일종의 멀티 태스킹이 안되는(?) 스타일이다. (운영체제로 따지면 일종의 일괄작업 시스템 같은..?)

 

그래서 CS나 스프링 등의 다른 영역들에 대한 학습은 미진했지만, 이번 한 주간 학습했었던 것들을 간단하게 정리해보고자 한다.

 

자바의 기초, 연산자와 제어문에 대해 학습해보았다!

지난 주 자바의 변수에 대해 얇고 넓게 학습했었던 것에 이어서 이번 주에는 자바의 '연산자'와 '제어문' 파트에 대해 학습해보았다. 지난 주 마감기한에 닥쳐서 학습했었던 것과 달리 이번 주에는 다소 여유를 가지고 자바 학습을 우선적으로 학습하고자 했다.

 

백기선님의 15주차 자바 스터디의 일환이지만 마스터즈 코스 동기생들과 함께 진행하면서 나름대로의 마감기한 규칙을 정하면서 하다보니 일종의 책임 의식도 생겨 평상시였으면 하지 않았을 학습도 하게 되었고 결론적으로 많은 도움이 되는 것 같다.

 

 

Java의 다양한 연산자(operator) 다루기

목차 1. 연산자와 피연산자 2. 연산자의 종류 2-1. 산술 연산자 2-2. 관계 연산자 2-3. 논리 연산자 2-4. 비트 연산자 2-5. instanceof 연산자 2-6. 대입(=) 연산자 2-7. 화살표(->) 연산자 2-8. 3항 연산자   3...

ikjo.tistory.com

 

 

Java의 제어문을 정복해보자!

제어문이란? 제어문은 프로그램의 흐름(flow)을 바꾸는 역할을 한다. 이러한 제어문에는 '조건문'과 '반복문'이 있는데, 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장

ikjo.tistory.com

 

연산자와 제어문에 대해 학습하면서 솔직히 대부분은 아는 내용이긴 했다. 하지만 그동안 자바에 대해 진득하게 학습했었던 적은 없었기에, 뭔가 지식들이 정리되지 않은채 머릿 속을 돌아다니는 기분이었다. 그래도 이번 기회에 "자바의 정석" 책을 정독하면서 스터디 관련 내용을 학습하는 과정에서 기초 내용들이 정리되면서 그동안 자바 기초 학습에 대한 니즈가 어느정도 해소되나가는듯한 기분이다.

 

앞서 대부분은 아는 내용이긴 했다고 언급했지만, 학습하는 과정에서 새롭게 알아가는 점도 많았다. 그 중에는 '안다'라고 말하는 게 무색할 수 있을 정도로 중요한 내용들도 있었다. '안다'라는 것은 다소 상대적인 개념이기 때문에 사실 내가 '안다'라고 생각하는 건 나만의 착각일 수도 있다. 어찌됐든 😅 이번 스터디를 통해서 새롭게 알아가는 것도 있다는 게 나름대로 큰 수확이라고 생각한다.

 

알고리즘과의 교감(?)

개인적으로는 알고리즘 문제를 푸는 것이 재밌다. 어떤 알고리즘 문제를 풀 때는 몇 시간 동안 고뇌하며 문제와 씨름하게 되긴하지만 문제가 풀렸을 때 느껴지는 그 희열감이 개인적으로는 만족(?)스러운 편이다. 👀 

 

나 같은 경우에는 정말 아이디어조차 떠오르지도 않는 문제가 아닌 이상 왠만하면 풀이를 보려고 하지 않는다. 뭔가 어떤 정해진 정답에 얽매이기보다는 나만의 풀이를 쌓아가는 것에 재미를 느끼곤 한다. 그리고 그러한 고민을 해나가는 과정에서 생각을 넓혀갈 수 있는 것이 좋은 것 같다.

 

물론, 나의 풀이가 '효율적'인 방법이 아닐 수도 있다고 생각하기에, 문제를 다 풀고나면 다른 사람들의 풀이를 참고하면서 나의 부족한 점을 확인하곤 한다. 그런 점에서 다른 사람들의 풀이가 공유되는 프로그래머스 등의 PS 플랫폼이나 알고리즘 스터디 같은 것이 많은 도움이 되는 것 같다.

 

이번 한 주간 알고리즘과 관련하여 학습했었던 것 중 나름대로 유익했었다고 생각했던 것으로는 백준 '트리의 부모 찾기'라는 문제가 있었다. 그동안 깊이 우선 탐색을 할 때는 관습적으로 인접 행렬 방식으로 접근했었는데, 이 문제를 통해 '인접 리스트 방식'을 언제 써야하는지에 대해 생각해볼 수 있었던 게 큰 수확이었다. (이에 대해서 글로는 본 적이 있었으나, 역시 직접 해보지 않으면 나의 것으로 체득이 되지 않는 것 같다. 😅)

 

 

[백준 - 11725] 트리의 부모 찾기 - Java

문제 설명 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 접근 방법 해당 문제는 DF

ikjo.tistory.com

 

또한 프로그래머스의 '수식 최대화'라는 문제도 문제 접근 방식에 대해 이것저것 생각해볼 수 있어 유익했었던 것 같다. 어떤 문제를 봤을 때 막막하다는 생각이 들더라도 부분적인 작업 단위로 하나하나 구현해나가다보면 어느새 전체를 구현할 수 있게 되지 않을까라는 생각을 해봤다.

 

 

[프로그래머스] 수식 최대화 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.

ikjo.tistory.com

 

아무쪼록 아직 어디가서 알고리즘을 안다라고 말하기는 민망한 수준이지만 😅, 그래도 하루하루 꾸준히 연습해나가다보면 언젠가 많이 성장해있을 나 자신을 기대해본다.

 

역시나 쉽지 않았던 토스의 코딩테스트

8월 6일 많은 사람들이 응시했었던 토스의 코딩테스트에 참여해봤다. 당장의 취업보다도 코딩테스트 경험을 쌓기 위한 차원에서 응시를 한거긴 하지만, 역시나 쉽지 않음을 느꼈다. 서버 직무로 지원했던 나의 경우 코딩테스트는 크게 '알고리즘 문제 풀이'와 '서술형 문제 풀이'로 나뉘었다.

 

알고리즘 문제 풀이의 경우 총 7문제가 주어졌는데, 풀이 시간은 총 1시간 30분이었다. 문제당 약 13분 정도의 시간으로 개인적으로는 알고리즘 문제 자체가 엄청 어려운 수준은 아니었다고 생각하지만, 시간이 매우 부족하게 느껴졌다. (마치 예전에 토익 시험이나 NCS 시험을 푸는듯한 기분을 받았다. 😅)

 

나의 경우 특정 문제에 너무 많은 시간을 허비해 정작 쉽다고 생각한 문제를 풀지 못한 것이 너무 아쉬웠다. 평상시 알고리즘 문제를 풀 때 시간 관리를 하지 않고 푸는 습관이 있다보니, 시간이 다소 촉박했던 이번 시험에서 시간 관리 능력이 부족했었던 것 같다. 😂

 

서술형 총 5문제로 30분이 주어졌는데, 주로 실제 서비스를 운영하면서 겪을 만한 이슈에 대한 내용들이 많이 나왔다. 풀 수 있었는데 못 풀었던 알고리즘 문제 풀이와 달리 서술형의 경우에는 나에게 있어 다소 어려운 내용들이 많아 딱히 아쉬움은 없었던 것 같다. 🤣 다만, 앞으로 프로젝트를 하면서 다채로운(?) 경험들을 쌓아가야할 필요성을 많이 느꼈다.

 

(번외) 이제는 다시 웨이트 운동을 해야할 때 🏋️‍♀️

웨이트 운동을 안 한지 정말 오래됐다. 마지막으로 했을 때가 언제였던가. 내 기억으론 작년 4~5월이 마지막이었던 것 같다. 😅 그 이후로는 위염이 심해 웨이트 운동을 하기 어려운 상황이었고, 위염이 좀 나아서는 나름대로 프로그래밍에 열중하느라 웨이트 운동을 하지 않았었다. (웨이트 운동을 하면 피곤하다는 나름의 핑계 💦)

 

예전에는 그래도 나름 운동을 했었으나 이제는 별다른 운동을 안하다보니 1년 사이에 팔, 다리가 가늘어지게 되었다. 🤣 아울러 나를 오랜만에 보는 주변 지인들도 같은 얘기를 종종 하곤 했다. 벌써 지금 나이부터 이렇게 근육이 빠지게 되다보니 뭔가 위기 의식이 느껴졌고 이제는 다시 웨이트 운동을 꾸준히 해야겠다는 생각이 들었다. 🏃‍♂️

 

아무래도 웨이트 운동을 하다보면 피곤하기 때문에 많은 운동은 하지 못하겠지만, 건강을 생각해서라도 앞으로 꾸준히 개발하기 위해서라도 운동의 필요성을 많이 느낀다. 🔥 (사실 마스터즈 코스 중에도 자주 들었던 생각이었다. 😅)