20200911-TIL

나영원·2020년 9월 11일
0

T.I.L.

목록 보기
30/145

오늘 할 일

  • 알고리즘 풀이 복습
  • 휴강기간중 공부한것들 돌아보기
  • 질문사항 해결
  • TIl작성 & 블로그 업데이트

오늘 한 일

  • 알고리즘 풀이 복습

    • 베스트앨범

      • sumMap을 생성안하고 바로 list로 만들어서 정렬을 하고 싶었는데 List로 만드니 장르를 기준으로 paly를 합칠수가 없었다
        • map의 put함수가 key값을 덮어씌우는 효과가 있어서 key값에 결과를 누적해 나가는데 사용하기가 좋았다
      • sumMap에서 sumList로 옮기는 과정에서 실수가 있었고 그 결과값이 Colletion.sort(sumList)에 반영이 되었는데 중간에 어떤실수가 있었나 확인하기 귀찮아서 그냥 구현했더니 1차결과는 맞지만 전체 테스트했을대 결국 fail했다
        • 누구보다 꼼꼼해야할 개발자가 귀찮다고 테스트 결과를 무시한것은 좋지 않은 자세인것 같다
        • 결국 sumMap에서 List로 옮기는 것은 key값을 하나씩 뽑아서 해당 key값에 valu를 뽑아서 sumList의 nod를생성하면서 하나씩 입력해주면 되는 것이 었다
          • map을 통해 key와 valu의 접근하는 연습이 된것 같다
    • 가장 큰 수

      • 람다식 사용과 compare사용 연습을 해 볼 수 있었다
        • compare에서 o1>02 에 retrun은 1로하면 내림차순이된다. 이것을 반대로하고 싶으면 return 을 -1로 주면된다
      • 이미 풀이를 알고 있는 문제이기에 코드 연습은 됬지만 풀이과정을 생각해내는 연습은 잘 되지 않는다.
        • 다른 문제를 더 풀어봐야될 것 같다
      • 마지막 test값이 0일때를 대비해 조건문으로 pq.poll() ==0 일때라고 썻는데 결과가 에러가난다
        • poll은 조건문에서 사용해도 자료가 빠져나오기 때문에 다른 값에도 영향을 주었던 것이었다. 그래서 강사님이 peek를 썻던게 기억나서 했더니 모두 통과하였다
    • 변장

      • 이건 어제 다시풀어본건데 getOrDefault 메서드를 사용서 ++value를 하니까 값이 2가들어가는데 왜 dafult값을 0이아니라 1을 주는지 햇갈렸다

        • 첫번재값과 default값이 같이들어가기 때문에 default를 1을 주는게 맞았다. 첫번째랑 같이들어가는것을 인식을 못해서 자꾸 한가지 경우의수를 더해줘야된다고 생각했음
          • 이래서 직접 구현해야되나보다.. 다알고 풀었다고 생각했는데 외운 결과였다니..부끄럽다
  • 알고리즘 한문제 풀이

    • 크레인 인형뽑기 게임
      • 처음으로 풀이 도움 없이 초급문제를 풀었다. 기분이 엄청좋다
      • 중복 for문과 반복문에서 전값과 비교해서 현재의 값을 처리하는 방식으로 풀이하였다
        • 처음에 중복 for문에 i,j 값의 위치를 반대로 표기해서 전혀다른 값이 나왔다
        • 위의 문제를 해결하다가 pop이 터져서 다른 pop이 일어날수있는 것을 발견하고 아래 반복문을 수정하였다
        • 아래반복문에서 pop이 안일어날때까지 반복을 해야되서 whil문안에 for문을 사용했는데 while문의 flag를 어디세워야 하나 한참 고민했다
          • 아직은 조금 더 익숙해져야 될 부분이긴 하지만 결국 찾아낸게 기분이 좋았따
  • ExpertAI 구현하신것 이해하기

    • 다행히 강사님이 어렵지 않게 코드를 구현하셔서 쭉 따라서 여러번 읽다가 보면 이해가 가능할것 같다
      • maxSocre를 Integer.min.value로 해놓은것은 상징적인 것 같다. 가장 작은 수를 넣어서 다음값과 비교해서 무조건 작은 값이라는 것을 내포하는 뜻 같다
    • 구조는 ai가 한수를 두고 그다음에 minimax를 재귀함수로 돌려서 게임이 끝날때까지 돌려서 둔 수가 나에게 +인지 -인지 체크하는 것 같다

오늘 느낀 것

  • 아침에 사고력을 키우려면 문제를 해결하는 과정에서 실패를 두려워하지 말고 여러가지 시도를 통해서 스스로 개념을 넓혀가는 과정을 거쳐야 된다는데 알고리즘이던지 예제를 풀던지 몇시간이던 그렇게 공부하는 시간은 즐겁고 계속하고 싶은데 진도를 따라가려면 여기까지는 해야된다는 그런게 있어서 맘이 급해지는것은 어쩔수가 없다.
    • 근데 스스로 문제풀어보며 배운것들을 최대한 활용해보고 그것이 나에게 개념화되어 지는 시간이 더 중요할 수 있어보인다. 그러나 공부시간은 한정이 되어 있기 때문에 그것을 잘 분배하기위해 균형을 맞추는일이 내가 결정해야 될 중요한 사항 같다

내일 할일

  • Expert AI 이해하기
profile
배우는 개발 일기

0개의 댓글