[2020 카카오 인턴십] 보석 쇼핑
programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr ## 접근 직관적으로 생각해야 답이 있다. 처음에는, 모든 범위에서 양쪽 범위를 줄여가며 탐색하려고 했다. 하지만 이 경우에는, N * N의 시간복잡도를 가졌다. 정확성 테스트는 통과했지만, 효율성 테스트는 통과하지 못했다. 따라서, N * logN이나 N의 시간복잡도를 가지도록 코드를 설계해야 했다. 보석의 개수를 중복을 제거할 수 있는 자료 구조를 통해서 구한다. 순차적으로, 보석들을 읽어가면서, 보석의 개수가 완성이 됐..
[2019 카카오 개발자 겨울 인턴십] 징검다리 건너기(Java, 간단한 코드, Union-Find)
programmers.co.kr/learn/courses/30/lessons/64062# 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr ## 접근 시뮬레이션 형태로 접근하면 절대 안된다. 시간복잡도가 대략적으로 계산해봐도 너무 크다. 따라서, 삭제해야할 돌을 우선순위큐에 넣어놓고, 순차적으로 접근한다. 돌이 가지고 있는 값이 지나갈 수 있는 사람의 수라고 볼 수 있다. 값이 3인 돌을 지우다가, 간격이 k보다 같거나 크면 문제가 발생하고 종료해야 한다. 순차적으로 돌들을 지우면서, 간격을 확인하는 방법을 생각해봐야 한다. 특정한 돌을 지울 때, 앞 뒤로 비어있는 돌들을 확인해서 값을 확인하면 된다. 앞 뒤로 비어있는 돌을..