728x90
기지국 설치
입출력 예
N | stations | w | return |
11 | [4, 11] | 1 | 3 |
16 | [9] | 2 | 3 |
내가 떠올린 풀이 해설
while문으로 현재 있는 위치부터 n보다 작거나 같을 때까지 반복한다. while문 안에서 현재 위치가 모든 기지국의 범위를 넘어선 경우와(만약 idx가 기지국 위치 배열의 길이보다 작거나 같고) 또한 현재 위치가 기지국의 범위보다 작은 경우일 때(현재 위치가 기지국 위치와 전파를 뺐을 때 보다 작으면) 기지국을 설치해준다. 그리고 현재 위치를 기지국의 전파 곱하기 2 더하기 1을 하고 현재 위치를 더해준다. 이는 설치한 기지국의 위치에서 벗어난 곳으로 위치해주기 위해서이다. 또한 위의 if문에 만족을 못하면 현재 위치가 모든 기지국의 범위보다 작으며 특정 기지국에 범위 내에 있는 경우이므로 현재 위치를 기지국의 파장의 범위 밖으로 옮기고 기지국의 위치도 옮겨준다.
정확한 풀이
class Solution {
public int solution(int n, int[] stations, int w) {
int answer = 0;
int now = 1;
int idx = 0;
while(now <= n) {
if(idx >= stations.length || now < stations[idx] - w) {
answer++;
now = (w * 2 + 1) + now;
}
else {
now = stations[idx] + w + 1;
idx++;
}
}
return answer;
}
}
오늘의 회고
프로그래머스로 처음 풀어본 문제였습니다. 커뮤러닝을 통해 예전에 배운 개념을 복습하는 식으로 진행이 될 것 같아 만족합니다. 또한 다른 사람들의 코드를 리뷰해주고 제 코드도 리뷰받는 방식으로 진행이 되어서 코딩 테스트뿐만 아니라 코드를 짜는 실력도 같이 성장할 것 같습니다. 열심히 공부하겠습니다. 오늘 문제 풀어보니까 아직 많이 부족한데 이 과정을 통해 한층 더 성장하는 제가 되었으면 좋겠습니다.
728x90
'알고리즘 > 프로그래머스 커뮤러닝' 카테고리의 다른 글
[커뮤러닝/6기] 3주차 step 2 - 3. 올바른 괄호의 개수 (0) | 2022.07.22 |
---|---|
[커뮤러닝/6기] 3주차 step 2 - 2. 게임 맵 최단거리 (0) | 2022.07.21 |
[커뮤러닝/6기] 3주차 step 2 - 1. 위장 (0) | 2022.07.20 |
[커뮤러닝/6기] 1주차 step 1 - 4. 숫자 게임 (0) | 2022.07.10 |
[커뮤러닝/6기] 1주차 step [1 - 2 ~ 1 - 3] 가장 큰 수, 예산 (0) | 2022.07.07 |