21년 2월 3일
한 일
-
프로그래머스 보석쇼핑와 여행경로 문제를 풀었다.
-
보석쇼핑
-
HashSet을 이용하여 보석 종류의 개수를 구한다.
-
이전 풀이에서 구간의 길이를 고정하던 것을 최소 길이로 변화하며 찾도록 하였더니 풀렸다.
-
HashMap<String, Integer>인 hashMap을 준비한다.
-
발견된 최소 길이인 int 변수 minRange를 두고, gems.length + 1로 초기화시킨다.
-
start변수와 end변수를 두고 둘다 0을 초기값으로 가진다.
-
end변수가 gems의 마지막 index까지 증가하며 while문을 돈다.
-
hashMap에서 end index에 해당하는 보석이름의 Value를 1 증가시킨다.
-
hashMap에서 start 보석이름의 value가 2이상인 동안, 보석이름의 value를 1 감소시키고 start를 증가시킨다.
-
현재 hashMap의 size가 총 보석 종류의 개수와 일치하고, end-start+1값이 minRange보다 작으면
end와 start를 저장한다.
-
-
while문이 끝난후 저장되어있던 start와 end가 정답이 된다.
(문제에서 기준이 1부터 시작하므로 new int[]{start+1,end+1}을 반환)
-
-
-
여행경로
- 정렬이 포함된 DFS문제였다.
- 모든 여행티켓을 사용한 경로를 DFS로 구해야 한다.
- 하지만 경로가 여러개일 경우 알파벳 순사가 앞서는 경로를 출력해야한다.
- 여행티켓을 알파벳 순서로 정렬한 후에, DFS로 구하면 간단하게 정답이 구해진다.
-
-
자바의 정석 Stream 부분을 읽었다.
잘못한 것
- 자바의 정석 Stream을 읽는데 집중이 안되서 정독하지 못했다.
- 시간이 부족하여 네트워크 공부를 하지못했다.
잘한 것
- 알고리즘에 자신감이 붙기 시작했다.
- 코딩테스트에 감이 생겼다.
느낌
- 오늘도 시간이 훅 가버렸다.
- 오랜만에 코드스쿼드 미션이 없는 날이라 개인공부를 하려고했는데 많이 하지 못했다 ㅠㅠ
할 일
- 코드스쿼드 미션하기
- 자바의 정석 읽기
- 프로그래머스 문제 풀기