난이도
LV3
풀이
import java.util.*;
class Solution {
public int solution(int n, int[] stations, int w) {
int answer = 0;
Queue<Integer> sq = new LinkedList<>();
for(int s:stations) sq.offer(s);
int position = 1;
while(position<=n){
if(!sq.isEmpty()&&sq.peek()-w<=position){
position=sq.poll()+w+1;
}else{
answer+=1;
position+=w*2+1;
}
}
return answer;
}
}
위 코드로 제출하면 정확성은 통과하는데 효율성을 통과하지 못한다.
Queue를 빼고 인덱스 값으로 탐색하도록 바꾸어주었더니 통과하였다.
import java.util.*;
class Solution {
public int solution(int n, int[] stations, int w) {
int answer = 0;
int si = 0;
int position = 1;
while(position<=n){
if(si<stations.length&&stations[si]-w<=position){
position=stations[si]+w+1;
si+=1;
}else{
answer+=1;
position+=w*2+1;
}
}
return answer;
}
}
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12979?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘' 카테고리의 다른 글
BOJ 1260번 - DFS와 BFS (0) | 2023.03.22 |
---|---|
프로그래머스 가장 큰 수(자바) (0) | 2023.03.15 |
프로그래머스 수식 최대화(2020 카카오 인턴십) (0) | 2023.03.10 |
프로그래머스 키패드 누르기(2020 카카오 인턴십) (0) | 2023.03.10 |
BOJ 2023번 - 신기한 소수 (0) | 2023.03.05 |