21년 2월 26일
한 일
-
코드스쿼드 체스만들기 5단계 완성하여 pull request 보냈다.
- 요구사항에 맞게 구현하였다.
- 단순한 코드를 구현하려면 요구사항을 만족하는 “최소한의 클래스, 메소드, 중복을 없애는 것”이 중요하다.
- 컨벤션 룰을 지키기 위해 노력하였다.
- 체스말을 기본점수 순으로 정렬하기 위해, Piece(체스말) 클래스가 Comparable 인터페이스를 구현하도록 했다.
- 풀 리퀘스트 주소
-
프로그래머스 광고삽입 문제를 풀었다.
-
광고삽입:
-
2월 17일에 풀려고 시도했다가 일부 테스트케이스가 틀려서 포기했던 문제이다.
-
문제 특성상 디버깅도 힘들고, 어디서 틀렸는지도 확인을 못하겠다.
-
다른 사람의 풀이를 참고하고, 문제를 정독하여 겨우 해결할 수 있었다.
-
풀었던 기본 로직은 틀리지 않았는데, 디테일에서 틀렸다..
-
배열 크기를 second로 바꾼 playTime으로 설정하고, 시청자들의 시작 시간과 종료 시간을 index로 하여 시청자의 증감을 기록한다.
int[] startEndCount = new int[playTime+1]; //playTime은 second로 바꾼 시청시간 logs를 순회하며: startEndCount[시작시간]++; startEndCount[종료시간]--;
-
startEndCount 배열을 가지고 index(시간)에 시청중인 사람이 몇명이었는지 기록하는 배열을 만든다.
int[] viewerCount = new int[playTime+1]; int viewer = 0; for(int i = 0; i <= playTime; i++){ viewer += startEndCount[i]; viewerCount[i] = viewer; }
-
slicing window기법을 이용하여 viewerCount 배열을 사용해서, adv_time동안 최대 누적 시청시간을 갖게하는 시간을 찾는다.
-
로직은 다 똑같은데 틀린 이유는 문제를 자세히 읽지 않아서였다.
-
누적 시청시간을 계산할 때, 종료시간은 포함되지 않는데 포함해서 계산했다 ㅠㅠ
- 예를 들어, 321초부터 350초까지 시청했으면, 누적 시청시간은 29초이다.
- 즉 viewerCount[321] 부터 viewerCount[349] 까지 더했어야 하는데, viewerCount[350]까지 더해서 틀린 것이었다.
-
-
문제 꼼꼼히 읽어야 겠다. 정말 고생했다.
-
-
잘못한 것
잘한 것
느낌
할 일
- 인프런 스프링 기초 강의 듣기
- 자바의 정석 읽기
- 프로그래머스 문제 풀기