21년 2월 3일

한 일

  • 프로그래머스 보석쇼핑와 여행경로 문제를 풀었다.

    1. 보석쇼핑

      • HashSet을 이용하여 보석 종류의 개수를 구한다.

      • 이전 풀이에서 구간의 길이를 고정하던 것을 최소 길이로 변화하며 찾도록 하였더니 풀렸다.

        1. HashMap<String, Integer>인 hashMap을 준비한다.

        2. 발견된 최소 길이인 int 변수 minRange를 두고, gems.length + 1로 초기화시킨다.

        3. start변수와 end변수를 두고 둘다 0을 초기값으로 가진다.

        4. end변수가 gems의 마지막 index까지 증가하며 while문을 돈다.

          1. hashMap에서 end index에 해당하는 보석이름의 Value를 1 증가시킨다.

          2. hashMap에서 start 보석이름의 value가 2이상인 동안, 보석이름의 value를 1 감소시키고 start를 증가시킨다.

          3. 현재 hashMap의 size가 총 보석 종류의 개수와 일치하고, end-start+1값이 minRange보다 작으면

            end와 start를 저장한다.

        5. while문이 끝난후 저장되어있던 start와 end가 정답이 된다.

          (문제에서 기준이 1부터 시작하므로 new int[]{start+1,end+1}을 반환)

    2. 여행경로

      • 정렬이 포함된 DFS문제였다.
      • 모든 여행티켓을 사용한 경로를 DFS로 구해야 한다.
      • 하지만 경로가 여러개일 경우 알파벳 순사가 앞서는 경로를 출력해야한다.
      • 여행티켓을 알파벳 순서로 정렬한 후에, DFS로 구하면 간단하게 정답이 구해진다.
  • 자바의 정석 Stream 부분을 읽었다.

잘못한 것

  • 자바의 정석 Stream을 읽는데 집중이 안되서 정독하지 못했다.
  • 시간이 부족하여 네트워크 공부를 하지못했다.

잘한 것

  • 알고리즘에 자신감이 붙기 시작했다.
  • 코딩테스트에 감이 생겼다.

느낌

  • 오늘도 시간이 훅 가버렸다.
  • 오랜만에 코드스쿼드 미션이 없는 날이라 개인공부를 하려고했는데 많이 하지 못했다 ㅠㅠ

할 일

  • 코드스쿼드 미션하기
  • 자바의 정석 읽기
  • 프로그래머스 문제 풀기