드디어
저의 봉인이 해제되었습니다
여태까지 코테 문제들을 풀어오면서
Hash 관련된 유틸리티 클래스를 쓴적이 없었습니다만
(자랑은 아님)
이 문제는 안 쓰면 번거로울 것 같아서
써버렸습니다
개념은 물론 알고있었기에 떠올랐네요
그런데 이번 문제가 그렇게 어려운 문제는 아니라는 것...
다들 아시리라 생각됩니다
시작합니다
자 먼저
TreeMap 객체 두 개
각각, 주차장과 요금 정산입니다
그리고 ArrayList 한 개를 만들어줍니다
HashMap의 형제인 TreeMap 인데
요놈은 key 값을 기준으로 정렬을 해줍니다!
요놈을 쓴다면 sort를 굳이 안 해줘도 되지요 ㅎㅎ
그리고 이 다음,
저는 누구나 알아보기 쉬운 코드를 지향하지만
요번 문제는 간단히 하려 하면 오히려 길어져버릴 것 같았기에
이렇게 작성했습니다
우선 for문으로 하나하나 가져옵니다. 네
그리고 setrecord에 그 하나하나 중 하나를 분해해서 넣어줍니다. 잔인
그리고 만약에 3번째 오는 녀석이 "IN" 이라면
그냥 얌전히 차량 번호를 키 값으로 시간을 InandOut에 넣어줍니다
하지만 "IN"이 아니라면... OUT 이겠죠
문제의 조건중에 뜬금없이 OUT 되는 차량은 없습니다
그러니 당연히 InandOut 주차장에 뭔가 하나는 들어있겠죠??
그럼 일단 정산할 시간을 계산 해서 resultput에 넣어줍니다
(timegap 메서드는 가장 하단에 두겠습니다)
그리고 만약 이미 Result에 해당 키값이 있다면
replace를 사용해 다시 키값과
이미 들어가있던 이용시간을 get으로 가져와 resulput을 더해서 넣어줍니다
그리고 주차장에서 차량을 remove로 제거 해줍니다
반대의 경우
그냥 넣어주고 remove해주면 되겠죵
그리고 전혀 OUT하고 있지 않은 차량들을 강제출차 시킬
for문 하나를 열어줍니다
InandOut에서 안에 있는 키 값들을 keys로 하나씩 가져옵니다
이번에도 timegap에 keys로 시간을 가져와
강제출차 시간인 23:59와 함께 넣어줍니다
그 아래는 위와 같습니다
remove를 안 해주는 것만 빼구용
remove해버리면 인덱스 문제로 오류가 나요
이제 마지막 for문입니다 ㅎㅎ
요금 정산입니다
저희는 TreeMap을 썼기 때문에
그냥 처음부터 하나한 가져와서 요금 계산을 해주면 됩니다!
단위 시간으로 나누었을 때 나머지가 있다면
단위 요금을 한 번 넣어주는 부분만 주의해주면 됩니다!
아마 ArrayList에 바로 넣어주어도 될 겁니다 ㅎㅎ
저는 그냥 호다닥 풀다보니 저렇게 작성했네요
이상입니다!!
감사합니다!!!!
마지막으로 timegap 메서드입니다
그럼 이만
아래는 제가 직접 손수 수작업으로 하나부터 열까지 전부 직접 작성한 커뮤니티사이트 입니다
신생커뮤니티라서 많이 삭막하지만 들려주시면 고마울 것 같아요!
'코딩 테스트 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Level 1 자바스크립트 삼총사 연습문제 (0) | 2022.10.13 |
---|---|
프로그래머스 Level 2 자바 오픈채팅방 2019 KAKAO BLIND RECRUITMENT (0) | 2022.09.06 |
프로그래머스 Level 2 자바 [3차] 방금그곡 2018 KAKAO BLIND RECRUITMENT (0) | 2022.08.27 |
프로그래머스 Level 2 자바 두 큐 합 같게 만들기 2022 KAKAO TECH INTERNSHIP (0) | 2022.08.24 |
프로그래머스 Level 2 자바 수식 최대화 카카오 인턴 (0) | 2022.08.24 |