-
프로그래머스 코딩테스트 - 기지국 설치코딩테스트 풀이 2024. 11. 23. 22:41728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12979
[프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/12979)
해결 방법
아이디어
1 2 3 4 5 6 7 8 9 10 이렇게 기지국이 설치되어 있다고 했을 때 설치할 수 있는 최소한의 수는 기지국의 범위가 닿지 않는 아파트 단지의 길이를 기지국 범위로 나눈 후 소수점 올림을 해주면 된다.
즉 위의 경우 기지국의 볌위가 3이기 때문에
1 2 3 4 5 6 7 8 9 10 빨간색 영역에서 설치할 기지국은 1개가 되고, 초록색 영역에 설치할 기지국도 1개가 된다.
만약 10번에 기지국이 설치되어 있지 않아 초록색 영역이 4로 늘어난다면 4 / 3을 올리한 2가 설치 개수가 된다.
해당 아이디어를 바탕으로 작성한 코는 아래와 같다.
- 기지국 범위 구하기 (w * 2 + 1)
- 마지막 기지국이 아파트 옥상을 커버하지 못한다면
- 옥상을 초과하는 기지국 추가
- 기지국을 순회하며
- 기지국이 도달하지 못한 밑의 층 계산 (end)
- end가 존재한다면
- (end / 기지국 범위) 올림
- 기지국의 범위를 벗어난 첫 번 째 층 계산
코드
function solution(n, stations, w) { var answer = 0; const length = w * 2 + 1 let start = 1; if (stations[stations.length-1] < n + w){ stations.push(n + w + 1); } stations.forEach((s) => { const end = s-w-start if (end){ answer += Math.ceil(end / length) } start = s + w + 1 }) return answer; }
728x90'코딩테스트 풀이' 카테고리의 다른 글
프로그래머스 코딩테스트 - 억억단을 외우자 (0) 2024.11.25 프로그래머스 코딩테스트 - 인사고과 (0) 2024.11.24 프로그래머스 코딩테스트 - 연속 펄스 부분 수열의 합 (0) 2024.11.22 프로그래머스 코딩테스트 - 스티커 모으기(2) (0) 2024.11.20 프로그래머스 코딩테스트 - 단속카메라 (1) 2024.11.18