오전에 객체지향프로그래밍 마지막 강의를 들었고, 오후에는 개인적으로 코딩테스트 문제 하나를 풀고, 자바 문법에 대해서 복습하였다. 특히, 프로그래밍 마지막 수업에서는 자바를 통해 객체지향 프로그래밍에 대해 실제로 코드를 작성하는 것을 보았는데, 내가 C#에서 작성하는 코드와 별반 다른것 없다 라는 것을 느꼈다. 이전에 학습했던 내용들이 하나씩 되새김질 하는 느낌이라 좋았던 것 같다.

 오후에는 코드 테스트 문제를 하나 풀었다. 오늘 푼 문제는 우박수열 정적분이다. 내용은 생각보다 간단하다. 그려진 정적분의 닫힌공간을 정적분하는 문제인데, 내 나름 머리를 쓰겠다고 직선함수를 정적분 해야한다는 생각을 오래했는데, 사실 어렵게 할 필요없이, 각각 그려지는 직선의 아래넓이를 구하면 되는 문제였다. 괜히 어렵게 접근해서 시간만 오래 소모한 느낌이였다. 다음부터는 쉽게 접근을 할 생각을 해봐야 겠다.

 나머지 시간동안 내일부터 시작될 미니 프로젝트를 대비해서 자바 문법을 복습했다. 아직도 헷갈리는 몇개의 문법(C#에서 일반적으로 사용하는 모양과 다른)것들이 익숙해질 수 있도록 나름 미니프로젝트를 연습했고, 나름대로 익숙해 진 느낌이다.

 오늘 오전에는 객체지향 강의 3번째인 SOLID 원칙에 대해서 강의를 들었고 오후에는 이번주 수요일부터 시작될 미니프로젝트를 대비에서 자바 문법에 대해서 복습하였다. 오늘은 아쉽게도 코드 테스트를 하지 못했다. 

 일단 오늘 배울 SOLID원칙은 결국 개발 방향 설계와 같은 방법론에 대한 이야기인데, 더 크게 보면, 소프트웨어 개발 방법론인 에자일 개발 방법론의 일부로 볼 수 있다고 생각했다. 즉, 객체 지향 원칙 또한, 소프트웨어를 개발하는 것의 일부 이기 때문에 더 이부분을 공부하기 위해서는 소프트웨어 방법론에 대해 공부하는 것이 좋을것 같다고 생각했다.

 오후에는 이때까지 강의로 들었던 자바 문법을 다시 복습했다. 특히 패키지와 임포트(package, import)의 활용에 대해서 조금더 알아봤다. 이전 까지만 해도, C#에서 사용 할 때는, 임의로 생성한 클래스들을 스크립트에서 활용하기 위해서는 namespace를 활용했는데, 자바는 조금더 구체적으로, 임의로 생성한 package내부에 새로운 클래스를 만드는 식으로 활용한다. 즉, 내가 생성한 클래스가 다른 이름이 같은 클래스와 혼동을 하지 않도록 package를 활용해서 구분한다는 것을 알 수 있었다.

 이번주는 생각보다 내가 얻어가는 점이 많았던 것 같다. 제대로 다시 시작한 코드 테스트 연습부터, 객체지향 프로그래밍에 대한 공부, 멀티 쓰레드, 동기화에대한 CS, 마지막으로 자바에 대한 공부등 많은 것을 얻어 갔던거 같다. 하지만 아직도 익숙하게 다룰수 없는 점이 마음에 걸린다. 주간 내내 코드테스트 연습으로 풀었던 문제만 벌써 20문제가 다되간다. 더욱 열심히 해야겠지? 이제 다음주 부터는 미니 프로젝트가 시작된다. 자바를 활용한 미니 프로젝트가 시작될 것인데, 여러가지로 기대가 되기도하고 걱정이 되기도한다. 또한, 몇주간 내가 쉬는 시간 없이 달렸던것 때문에, 토요일 하루정도는 푹 쉬기만 했었다. 하루정도 푹 쉬니 다음주간을 준비할 시간이 생겼던것 같다. 앞으로 2주에 한번정도는 푹 쉬는 날을 만들어야 할 것 같다는 생각이 들었다. 

 이제 다음주에도 힘내서 한주를 잘 준비할 수 있게 해야겠다.

 오늘 오전은 객체지향 프로그래밍 강의가 있었고, 오후에는 알고리즘 공부 및 코드테스트 연습, 그리고 CS 강의가 있었다. 오전의 객체지향 프로그래밍에서는 객체지향 프로그래밍의 정의에 대해서 설명했었다. 즉, 이것은 소프트웨어의 세계에서 오브젝트 스스로가 능동적으로 적용될 수 있도록 지향하는 프로그래밍이다. 그리고 오전 시간동안 우연희 튜터님이 주신 계산기 만들기 과제를 풀면서, 예전에 했었던 기억이 나서 코드를 작성하는데 큰 어려움은 없었다.

 그리고 오후 시간에는, 코드 테스트 연습을 했는데, 멀쩡한 사각형 문제를 풀었다. 이 문제는 크게 보자면, 결국 최대공약수를 어떻게 구하는가가 핵심이였던 문제였고, 생각보다 큰 시간이 걸리게 되었는데, 여러가지 제반사항을 고려해야하는 점이 많았던 것이다. 처음에 짯었던 최대공약수를 찾는 알고리즘에서, 시간복잡도가 O(N)이 걸리는 채로 코드를 작성했는데, 이 방법에 의해서 Timeout이 걸리는 테스트 케이스가 걸렸던 것이 있었다. 이것을 해결하기 위해서, 구글링을 했었는데, 유클리드 호제법에 대해서 알 수 있었다. 역시 코딩은 수학의 연장이라는 말이 괜히 나오는 것이 아니였던것 같다. 앞으로 여러가지 알고리즘을 접해보면서, 스스로가 익숙해 지는 수 밖에 없는 것같다. 

 이번주 남은 시간동안 자바에 대해서 더 공부를 하고, 알고리즘을 더 공부 해야할 것 같다.

 오늘은 오전에 객체지향 프로그래밍 강의가 있었다. 1시간 반정도로 4일동안 강의를 하신다고 한다. 강의를 들을 때, 대학교때 들었던 강의가 새록새록 기억이 났다. 오늘 내용은 객체 지향 프로그래밍의 특징에 대해서 설명해주셨는데, 알고있는 개념들이라 복습하는 차원으로 들었다.

 또 오후에는 남은 알고리즘 강의 2강과, 스스로 프로그래머스 1단계 문제를 풀어보았다. 알고리즘 강의에 나왔던 문제들은 내가 풀기에는 생각보다 오랜 시간이 걸렸다. 아직 지도를 만들어서 해본다는 개념자체를 잘 이해를 못해서 그런것 일까? 싶은데, 내 생각에는 배열에 참조해야할 정보를 선정하는 것에 어색해서 그런것 같다. 또한, 다양한 배열을 사용해서 제작한다는 느낌이 어색해서 사용을 할 생각을 못했던 것 같다. 제한된 사항에서는 공간적 복잡도는 신경 쓸 필요가 없다는 것을 남은 알고리즘 강의동안 알았던 것 같다.

 그리고 스스로 풀어본 프로그래머스 1단계 문제들은 나에게는 너무 쉬운 느낌이였다. 앞으로는 단계를 올려서 풀어야될 것 같다. 

 이번주 남은 시간도 이런 느낌으로 자습하는 느낌이 계속 될 것 같다. 열심히 공부를 해야지

 오늘 오전에는 타임어택이 있었다. 코드 테스트 문제를 시간안에 푸는 것인데, 주어진 문제는 나에게 쉬운 문제였다. 이번에는 그나마 계속 사용해서 익숙해진 파이썬을 이용해서 알고리즘을 풀었는데, 나에게 매우 쉬운 난이도여서 푸는데 30분도 안걸렸던거 같다. 그래서 오전시간동안 2개의 문제를 추가로 풀었다. 

 오늘 오전 시간동안 풀었던 문제는 2가지였는데 하나는 올해 카카오 블라인드에 나왔던 신고 결과 받기이고, 또 다른 하나는 알고리즘 문제수업때 들었던 삼성 역량평가 새로운 게임2 였다. 신고 결과 받기는 처음에 문제를 풀고 함수를 만드는데 30~40분가량 걸렸는데, 계속 테스트 케이스 통과가 안되서 내가 코드를 잘못 짯나 생각을 했었는데, 해당 코드를 가지고 IDE에서 디버그도구를 활용해 테스트했는데 문제가 없었다. 알고보니 매개변수로 주어진 값을 활용안하고 임의로 값을 사용해서 시간을 날렸던 것이였다. 앞으로 꼭 한번씩은 매개변수를 제대로 사용했는지 체크를 해야겠다는 생각이 들었다. 실전에서 이랬으면 정말 허탈했을 것 같았다. 앞으로는 꼭 제대로 체크하자.

 오늘도 역시 알고리즘과 자료공부, 자바언어 공부를 하는것이 목표이다. 특히 내일 알고리즘 관련 퀴즈를 낸다고 해서 알고리즘 위주로 공부를 했다. 프로그래머스에 있는 문제를 활용해서 풀었다.

 오늘 해결할 문제는 카카오 블라인드 기출문제 였던 성격유형검사하기이다.

 문제의 대략적인 개괄은 MBTI유형 검사지를 내식대로 만드는 것인데, 각각의 문항마다 점수를 체크하고, 높은 점수를 가진 유형의 MBTI를 적어서 기록하고 마지막에 반환해주면 되는 것이다. 현재는 c++로 했었는데, 최대한 빨리 java의 공부를 끝마치고, java를 사용해 해당 문제를 한번더 풀어보는 것이 이번 주의 목표가 될 것 같다.

 문제의 난이도는 레벨 1인데 생각보다 오랜걸린게 충격이다. 계속해서 다양한 알고리즘문제를 풀어보면서 발전해 나가야겠다 생각했다.

 내일 문제는 어느정도 난이도로 나올지 궁금해졌다. 다 풀수 있어야할텐데 걱정도 든다.

 오늘부터 주어진 강의를 대부분 완강했기에, 코드 테스트를 하나씩 풀어보기로 했다. 오전 시간동안은, 알고리즘 5주차 강의에 있는 코드테스트를 직접 풀어보는데 생각보다 많이 어려웠던것 같다. 결국 이런 상황을 해결하기 위해서는 계속해서 코드테스트를 해보는 수 밖에 없을 것 같다. 이제부터 매일 2개정도 코드테스트를 푸는 것으로 꾸준히 하게 된다면 어느정도 나아질 것이라고 생각한다. 

 또한 이번주부터 한권의 책을 가져와서 읽어보기로 했다. 책 이름은 바로 Effective Java, 이펙티브 자바인데, 이전에 Effective C#을 읽어본 바로는, 이펙티브 시리즈는 개발자에게 중요한 것들을 많이 알려주기에 가장 먼저 선택하게 된 책인 것 같다. 강의 대신에 이제부터 하나씩 읽어볼 예정이다. 이제부터 하나씩 하자 하나씩!

+ Recent posts