20210316-TIL

나영원·2021년 3월 17일
0

T.I.L.

목록 보기
122/145

오늘 할일

  • 포트폴리오 준비
  • 채용공고 읽기
  • 개인프로젝트 준비
  • 알고리즘 문제풀기
    • 알고리즘 공부법 영상보기
  • 기술면접 준비

오늘 한 것 & 배운 내용

포트폴리오 준비

  • 선 준비 후 지원이라는 전략에서 선지원 후 준비라는 전략으로 변경했기 때문에 가장 우선순위에 포트폴리오 준비를 둬야 할 것 같아서 오전부터 포트폴리오 자료들을 모으기 시작하였다

    • 포트폴리오에 들어갈 내용으로는 깃헙주소, 프로젝트, 블로그주소, 자기소개 정도가 있는 것 같다.
  • 포트폴리오는 간단한 웹페이지 한장짜리로 준비하기로 했고 jekyll 테마를 사용하여 gihub.io를 통해 배포(?)를 할생각이다

    • jekyll 테마를 사용하기 위해 간단하게 사용방법을 익혀야 했다
    • 참고자료를 따라하며 몇 가지 디버깅을 하여 어렵지 않게 gihub.io에 테스트 배포할수 있었다
  • 만들고 싶은 포트폴리오와 어울리는 jekyll 테마를 찾기 위해 여러 사이트를 방문하였다

    • 무료로 배포되는게 많았지만 고퀄리티에 유료 테마들도 있어서 관심이 생기는 것들을 정리하기 시작하였다
    • 해당 테마를 gihub.io에 테스트로 배포를 해보았고 이상없이 작동는 것을 확인하였다
      • 소스코드를 통해 어떤 부분들을 고칠수 있는지와 어떤아이콘들 사용했는지 확인하였다
  • 오늘은 여기까지로 마무리하고 내일 이어서 내용 채우기를 하면 될 것 같다

채용공고 읽기

  • 어제 크레딧 잡을 활용하니 연봉에 대한 정보 + 기업 리뷰정보를 더 알 수있어서 부족한 정보를 조금 더 채울 수 있는 것 같아서 좋았다
    • 최대한 많은 기업 정보를 보면서 어떤 기업들을 목표로 해야하는지 정리해보면 좋을 것 같다
  • 채용공고를 읽다보면 자격 요건에 비해 부족한 부분들이 보여서 좌절되기도 하지만 또 부족한 부분들을 자극으로 새로운 목표를 새우고 더나은 개발자가 되기 위해 노력할 수 있다고 생각하기로 했다

알고리즘 문제 풀이

일곱 난쟁이

  • 내풀이 - 소요시간 30분

    • 완전탐색을 하여 9개의 키중 7개를 뽑아 합을 100을 만들면 될거같은데 7개를 for문으로 돌리는 것 자체가 부담스러워서 고민을 많이하였다
      • 발상을 전환하여 9개중에 2개를 뽑아 9개의 합에서 2개의 합을 뺀것을 100을 만드는 것으로 생각하니 훨씬 문제 풀기가 수월했다
    • 이렇게 전환해서 생각하는데 시간이 올래 걸리지 구현자체는 반복되는 부분들이라 빠르게 구현할 수 있었다
      • 연습량을 통해 비슷한 유형들의 문제들을 계속 만나다보면 나아질 수 있는 부분으로 느껴졌다
  • 다른사람 풀이

    • 다른 사람풀이를 보는데 간단한 구현 같은데도 다른 사람코드는 정말 잘 안읽힌다..

      • 이래서 코드의 가독성을 강조하고 주석을 다는 것 같다
        • 바로 나의 코드에도 주석을 달아 두었다..
    • 대부분 나와 비슷하게 9개에서 2개를 찾는 방식을 통해 문제를 해결 한 것 같다

부분합

  • 내풀이 - 소요시간 30 +@

    • 0부터 N-1까지의 숫자를 모두 부분합을 구하여 해당 숫자의 생성자가 맞는지 확인하였다
      • 제출을 하고 다른 답들과 비교를 하니 다른 답들에 비해 시간이 거의 2배 이상 걸린 것을 보니 역시 1부터 체크한게 시간이 오래걸린 것같다
      • 범위를 좁혔어야 됬는데 규칙성을 찾지못해서 못줄인게 원인 인 것 같다
    • 완전탐색을 적용할 때는 범위를 어떻게 하면 줄여서 성능을 좋게 할지에 대해서 고민해보는 것이 좋을 것 같다
  • 다른사람풀이

    • 브루트포스 알고리즘으로 구하지만 N의 최소 범위를 구해 연산횟수를 줄인 방법을 찾았다
      • 분해합이 N 선택자가 K일때 N = K+ k1 + k2 + k3...이다
      • K가 4자리수라고 가정할때 이항을 하면 N -(k1+k2+k3+k4) = K가 된다
        • 이때 K의 최소값은 N에서 -해주는 k1,k2들이 최대값일때 이다
        • 그래서 N - (자릿수*9) 를 하면 K의 최소값을 구할수가 있게 된다
          • K의 범위를 for문으로 나타내면 다음과 같다 for(int i = (N - (N.length * 9)); i < N; i++)
    • 참고 : [백준] 2231번 : 분해합 - JAVA [자바] : https://st-lab.tistory.com/98
  • 이전엔 알고리즘이 안풀리면 초조하고 마음이 힘들고 그랬는데 안풀어보면 유형의 문제라서 그렇다고 생각하면서 풀면 마음도 편하고 더 많이 풀어서 여러 유형을 먼저 알아둬야 겠다는 마음이 생겨서 훨씬 공부하기가 수월해졌다

기술면접 준비

  • 오늘은 객체지향 5원칙에 대해서 정리해보았는데 객체지향의 목표에 대해서 다시 생각해 볼 수 있는 시간이었다

    • 객체지향의 설계원칙은 객체지향의 4가지 특징인 추상화, 캡슐화, 상속, 다형성 을 잘살리기 위한 설계 방식이고 그것을 지킴으로써 코드의 유지보수성, 가독성, 확장성을 확보하기 위함으로 정리할 수 있었다
      • 프로젝트가 커질 수록 유지보수와 기능의 확장이 어려워질수 밖에 없기 때문에 이런 설계원칙을 강조할 수 밖에 없었고 그것을 위해 객체지향이 생길 수 밖에 없었구나 라는 생각을 해보았다
      • 이 중에서 특히 아직 어려운 개념은 ISP같은데 아직 인터페이스를 많이 사용해보지 않아서 그런지 프로젝트를 하면서 어디까지 인터페이스의 책임을 가져가야되나 라는 고민을 많이 해본 것 같다

개인프로젝트 준비

  • 요즘 취준을 하며 혼자 밥먹는 상황이 많은데 혼자 갈만한 식당을 찾기가 어려운점에서 착안해서 프로젝트 주제로 혼자밥먹는 사람들이 편하게 밥먹을 만한 식당과 한가한 시간대를 알려주는 어플리케이션으로 잡으면 어떨까 생각해 보았다
    • 일반 맛집 어플과는 다르게 1인 좌석이 구비되어 있는지, 혼자먹을때 불편하지 않은지에 대한 정보들을 담으면 어떨까 생각해 보았다

내일 할일

  • 채용공고 읽기
  • 개인프로젝트 준비
  • 알고리즘 문제풀기
    • 알고리즘 공부법 영상보기
  • 기술면접 준비
profile
배우는 개발 일기

0개의 댓글