항해99/개발일지

20220120 개발일지(WIL)

paran21 2022. 1. 21. 10:38

이번 주차는 알고리즘 기초 주간이었다.

개발일지라기보다는, 공부일지에 가까운 것 같다.

 

알고리즘 주간이었지만 실제 알고리즘을 공부했다기 보다는 JAVA 기본 문법을 익히는 시간이었다.

선정된 문제들은 프로그래머스 level 1 단계 문제들로, 찾아보니 1단계는 알고리즘에 대한 지식없이도 기본 문법을 가지고도 풀 수 있는 문제라고 한다.

 

처음에 JAVA라는 언어에 매력을 느꼈던 부분 중 하나는 타입과 관련된 부분이었다.

그런데, 실제 공부하면서 특히 초창기에 가장 힘들었던 부분도 타입이었다.

타입에 따라서 사용할 수 있는 메소드가 너무 달랐고, 문제에서 요구하는 타입으로 변환해서 반환하는 것도 힘들었다.

 

특히 처음에는 자바가 어떤 언어인지, 메소드는 어떻게 쓰는 건지, 어떤 식으로 동작하는지 파악이 안되서 더 어려웠다.

알고리즘 주차 시작하기 전날 저녁에, 미니프로젝트가 빨리 끝나서 자바 기본 강의를 조금 들었는데

들으면서도 개념이 두루뭉실하게만 잡히고 그래서 실제로는 어떻게 구동하는건데, 라는 생각이 강했다.

클래스나 인스턴스와 같은 개념들은 문정과 대학원 수업을 들으면서 봤던 내용들이라 개념 자체가 생소하지는 않았다.

 

초반에 문제를 좀 풀다가 자바 공부가 더 필요한 것 같아서 다시 자바 공부로 돌아왔다.

코드잇이 유효기간이 남아서, 코드잇에 있는 자바 강의를 중간부터 들었는데(클래스 부터?) 실제 클래스를 만들어보고 연결하면서 아, 이런식으로 구동되는구나 라는 개념이 좀 잡힌 것 같다.

프로그래머스 자바 기초 강의에서도 실습문제들이 굉장히 간단하게(예를 들면 칸 넣기, 코드 한줄 추가 등등) 되어 있어서 실습 문제만 쭉 풀었다.

(코드잇 강의가 잘 맞는거 같아서 결국 맴버십 연장했다.)

 

다시 알고리즘 문제로 돌아와서 쭉 풀다가, 검색해서 나오는 개념들 중 모르는 개념(예를 들면 인터페이스)이 계속 등장해서 다시 자바공부를 했다.

ArrayList쓰면서 List과의 관계가 계속 햇갈렸는데 상속, 인터페이스, 오버로딩 등등 개념을 보면서 이런 방식이구나, 알 수 있었다.

또, 주특기 주간 들어가면 자바 자체를 공부할 수 있는 시간은 많이 없을 것 같아서 큰 개념들은 한번씩 짚고 넘어가고 싶었다.

 

그렇게 개념을 더 잡고 다시 알고리즘 문제를 풀었는데, 문제 푸는 속도가 훨씬 빨라졌다!!

기본 문제들이지만, 자바로 어떻게 하면 될지 틀이 빨리 잡히는 것 같았다.

 

그리고 '모의고사'... 이 문제 풀다가 진짜 좌절했다가 결국 성공해서 너무 기뻤다.

문제를 어떻게 풀면 될지 풀이방법은 금방 작성했는데(IDEA에 먼저 주석으로 작성했다)

구현하는데서 많이 해맨거 같다.

코드가 좀 길어져서, 이걸 한번에 해결해주는 어떤 메소드가 있을까 했는데 딱히 그런건 없는 것 같았다.

슬슬 알고리즘풀면서 처리시간과 효율성이 신경쓰이는데 이건 차차 계속 공부해나가야 할 것 같다.

(예를 들면 Stream은 처리 속도가 오래걸리는 편이라 for문으로 돌리는게 더 나을 수 있다.)

 

알고리즘과 자바 자체에 흥미를 많이 붙였고, 어쨌든 기본 개념들을 한번 쭉 훑어보고 주특기를 시작하게 되어서 한 주를 잘 마무리한 것 같다.

특히 자바는 정말 잘 짜여진 언어구나, 라는 생각이 많이 들었다.

다른 언어를 아직 공부해보지 않아서 비교는 어렵지만 설계 자체에서 문제가 생길만한 부분은 최대한 미리 차단을 시키는 것 같다.

굉장히 매력적인 부분이고 자바를 더 본격적으로 사용하고 싶어졌다.

'항해99 > 개발일지' 카테고리의 다른 글

20220122 개발일지  (0) 2022.01.23
20220121 개발일지  (0) 2022.01.21
20220113 개발일지  (1) 2022.01.13
20220112 개발일지  (0) 2022.01.13
20220111 개발일지  (0) 2022.01.13