문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/1838
n의 범위가 작기 때문에 적당한 가지치기를 진행하면 브루트 포스로 풀 수 있는 문제였습니다.
알고리즘은 아래와 같습니다.
0. 문제에서 핵심은 특정 시간대에 어떤 회원들이 운동을 하고 있는지가 아닌 제일 많이 몰리는 시간대에 총 몇 명이 운동하고 있는지입니다.
1. 주어진 timetable을 순회하면서 제일 많이 겹치는 시간대에 총 몇 명의 회원이 있는지 확인합니다.
1.1 1번에서 구한 회원 수가 1 이하일 경우 0을 반환하고 프로그램을 종료합니다.
2. 락커 간 거리는 맨해튼 거리를 따르기 때문에 최대 거리는 2 * n - 2입니다.
2.1 락커 간 거리의 기준을 최대 거리부터 1까지 점진적으로 감소시키면서 회원들의 락커를 각 락커 간의 거리가 해당 거리 이상인지 확인한 뒤 조건을 만족하면 락커를 배정합니다.
2.2 배정된 락커 수가 1번에서 구한 회원 수와 일치할 경우 해당 거리를 반환합니다.
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 기둥과 보 설치 (0) | 2022.07.21 |
---|---|
[Programmers] 광고 삽입 (0) | 2022.07.21 |
[Programmers] 보행자 천국 (0) | 2022.07.15 |
[Programmers] 경주로 건설 (0) | 2022.07.13 |
[Programmers] 보석 쇼핑 (0) | 2022.07.09 |