일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- javac
- 코딩테스트
- Queue
- Eclipse
- CSS
- HashMap
- 자료구조
- compare()
- hash
- string
- HTML
- 우선순위큐
- 스파르타코딩클럽
- Stack
- programmers
- 자바
- 네이버
- HashSet
- 정렬
- coding test
- SQL
- Naver
- point queue
- array
- 해쉬
- Coding
- Java
- 배열
- 프로그래머스
- Python
- Today
- Total
목록코딩테스트 (11)
youngik
먼저 위 문제를 분석을 해보았을 때 1. phone_book의 각 String 값을 HashMap에 동일한 부분이 있으면 넣지 X, 없으면 Hash에 넣는다. 2. HashMap에 넣게된다면 동일한 key가 없기 때문에, 동일하게 접두사 부분이 있으면 길이가 줄어든다. (*따라서 phone_book의 길이와 Hash에 넣은 길이가 다르면 접두사가 있다는 말) 1번을 어떻게 구현을 해야할지,, 너무 생각보다 너무 잘 안떠올라서 이래저래 생각도 해보고, 머리 아파서 침대에 누웠는데 어떻게 할지 생각이 났다. (*그런데 피곤해서 자다가 일어나서 만들었다는 것ㅋㅋㅋ) 내가 생각한 방법은 접두사는 앞에서 붙이는 부분이기 때문에 String의 값을 charAt()으로 한개씩 불러오는 것이었다. 각 String을 불..
문제를 읽어봤을 때 정말 현실에서도 저렇게 문제를 찍는 사람들이 있을텐데, 그 생각을 알고리즘으로써 풀어보는게 재밌는 것 같다! 위 문제도 분석을 해보았을 때, 1. 먼저 1번, 2번, 3번 수포자가 찍는 패턴이 있음 (*1번 : 1~5번 반복 / 2번 : 2,1,2,2,2,3,2,4 반복 / 3번 : 3,3,1,1,2,2,4,4,5,5) 2. answers의 배열과 비교를 해서 각각의 수포자 패턴의 정답과 일치하면 count 증가 3. answers의 배열이 더 긴 경우에는, 다시 첫번째 배열로 가서 로테이션으로 비교 4. 가장 높은 점수를 받는 사람이 여러명일수도 있음. (오름차순 정렬) 쉬운 문제처럼 보였지만,, 번거로운 작업들이 많았던 것 같다. 1) 수포자 배열 끝까지 검색을 하면 다시 첫번째로..
먼저 위 문제를 분석해봤을 때, 1. (중요도, 위치값)를 가진 Point쌍의 값을 queue에 넣는다. 2. 각 cycle마다 현재 남은 queue의 중요도가 가장 큰 값과 비교를 한다. 3. 맨 앞에 값을 poll() 해봤을 때 max값과 일치하면 output queue에 넣고 작으면 다시 queue에 add()한다. (*1-3번의 작업은 priority 큐가 비어있을 때 까지 반복) 4. 1-3번의 작업이 끝나면 output queue에서 location과 일치하는 위치값을 출력한다. (몇번째로 출력되는지) -> 예제 문제에서 봤을 때, 동일한 값이라도 출력되는 순서가 다르기 때문에 원래 queue에서 위치값을 같이 저장했다. -> 몇번째로 인쇄됐는지 결과값을 물어볼때 0이 아닌 1부터 시작하기 때..