본문 바로가기

카카오 기출12

[2019 카카오 기출] 징검다리 건너기 스톤 배열 크기를 N이라 했을 때 정렬을 수행하고 선형탐색을 통해 건너려고 하면 O(N^2)이 되어 시간초과가 나게 됩니다. 결국 특정 높이에 대한 탐색을 O(N)이 아닌, O(logN)에 해야하므로 이분 탐색으로 접근해볼수 있습니다. 통과한 니니즈 친구들의 수를 F라고 했을 때, 각 돌은 F만큼 높이가 감소합니다. 이 감소한 높이로 인해 연속으로 0이 되는 돌의 개수가 K이상이면 더 이상 친구들은 지나갈 수 없습니다. 그래서 특정 인원 수 M명이 지나간 후에 디딤돌을 더 지날 수 있는지 없는지를 파악해서 이 M값의 상한선을 구하면 그게 답이 됩니다. 2020. 5. 6.
[2019 카카오 기출] 불량 사용자 배열 크기 제한이 크지 않으므로 팩토리얼로 경우의 수를 생성해도 시간초과가 나지 않습니다. user_id 목록을 next_permutation을 통해 모든 경우의 수를 생성해주고, 이를 banned_id 와 비교해줍니다. 포함되는 경우의 수는 비트연산자 & set을 통해 특정 상태 나타내는 하나의 수를 set에 저장하였습니다. set에 들어있는 수는 banned_id 리스트와 일치하는 user_id의 유일한 목록을 나타내므로 set에 들어가있는 원소의 수가 정답이 됩니다. 2020. 5. 6.
[2018 카카오 기출] 파일명 정렬 HEAD / NUMBER / TAIL로 정보를 나누어 파싱하고, 저 같은 경우는 id라는 필드를 하나 더 만들어서 리스트에 들어온 순서대로 오름차순 정렬되도록 하였습니다. 2020. 5. 2.
[2018 카카오 기출] 캐시 캐시 정보를 Map로 관리하였습니다. Map 주의해야 할 점은, cacheSize == 0 일 때, 결과값은 5 * cities.size 라는 점입니다. 2020. 5. 2.