프로그래머스: 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587
코드
1 | public int solution(int[] priorities, int location) { |
흐름
우선순위가 담긴 배열(priorities)을 Queue에 저장
큐에 첫 번째 값을 꺼내서 그 뒤 값들과 비교
첫 번째 값이 뒤에 있는 값들 보다 작다면 큐에 맨 뒤로 보냄
출력해야 되는 프린터의 index를 조정
- index가 0 이라면 맨 뒤로 이동했을테니 큐 크기 - 1;
- 아니라면 앞으로 한 칸 이동 했을테니 -1
맨 뒤로 이동 시켰으면 맨 앞에 값이 변경 됐으므로 처음부터 다시 검사
큐의 0 번째 인덱스가 가장 큰 값이라면 count를 증가시키고 출력해야 하는 프린터의 위치를 확인
출력해야하는 프린터가 맨 앞이라면 break로 반복문을 빠져나와 프로그램 종료
아니라면 맨 앞에 값을 삭제하고 index를 -1 해서 한 칸 앞으로 당김
끝날 때 까지 반복
끝
결과
번호 | 속도 |
---|---|
테스트 1 | 통과 (3.17ms, 52.8MB) |
테스트 2 | 통과 (3.41ms, 52.6MB) |
테스트 3 | 통과 (1.33ms, 52.6MB) |
테스트 4 | 통과 (1.15ms, 50.8MB) |
테스트 5 | 통과 (0.85ms, 52.2MB) |
테스트 6 | 통과 (1.44ms, 52.7MB) |
테스트 7 | 통과 (1.58ms, 50.4MB) |
테스트 8 | 통과 (3.89ms, 52.9MB) |
테스트 9 | 통과 (1.04ms, 52.8MB) |
테스트 10 | 통과 (1.57ms, 52.3MB) |
테스트 11 | 통과 (3.90ms, 52.7MB) |
테스트 12 | 통과 (1.07ms, 52.3MB) |
테스트 13 | 통과 (4.36ms, 52.1MB) |
테스트 14 | 통과 (0.83ms, 52MB) |
테스트 15 | 통과 (0.95ms, 50.4MB) |
테스트 16 | 통과 (1.21ms, 50.3MB) |
테스트 17 | 통과 (2.79ms, 50.7MB) |
테스트 18 | 통과 (0.94ms, 50.7MB) |
테스트 19 | 통과 (2.61ms, 53.1MB) |
테스트 20 | 통과 (1.51ms, 52.3MB) |
테스트 케이스
1 | assertEquals(1, test.solution(new int[] {2, 1, 3, 2}, 2)); |