on
[프로그래머스] 기능 개발 - JAVA
[프로그래머스] 기능 개발 - JAVA
728x90
반응형
[프로그래머스] 기능 개발 - JAVA
문제에 대한 이야기
스택이나 큐를 이용해서 푸는 문제입니다. while 문을 어떻게 작성해야하지? 라는 생각과 함께 꽤 시간이 지난 후 풀게 되었습니다. 그만큼 그렇게 쉬운 문제는 아닙니다.
접근 및 오류
우선 큐와 리스트를 만들고 그 안에다가 집어 넣으면서 접근했습니다.
우선 temp 배열을 만들어서 그 안에 기능 개발에 소요되는 시간을 넣습니다.
0으로 나눠떨어지지 않는다면 1을 더해줬습니다.
그 후 그 값들을 큐에 넣어줍니다. (처음부터 큐에 넣어도 됩니다.)
그 후, 큐가 빌 때까지 while loop를 돌려줍니다.
그 다음 remove로 맨 첫 원소 빼주고 그 다음꺼 peek()을 해주면서 그거보다 크면 계속 count를 해줍니다. 동시에 큐에서 제거해주고요.
top이 peek()보다 작다면 바로 break를 걸어줍니다.
그렇게 쌓인 count를 list에 넣어줍니다.
그 후 list에 있는것을 그대로 answer배열에 넣어서 답을 제출하면 됩니다.
큐나 스택을 사용한다면 들어가는 숫자에 유의해야 합니다.
전체 코드
public int[] solution(int[] progresses, int[] speeds) { List list = new ArrayList<>(); int[] temp = new int[progresses.length]; for(int i=0;i queue = new LinkedList<>(); for (int i : temp){ queue.add(i); } while(!queue.isEmpty()){ int cnt = 1; int top = queue.remove(); while(!queue.isEmpty() && queue.peek() <= top){ cnt++; queue.remove(); } list.add(cnt); } int[] answer = new int[list.size()]; for (int i=0;i
728x90
반응형
from http://soobinhand.tistory.com/78 by ccl(A) rewrite - 2021-11-20 04:02:25