반응형
programmers.co.kr/learn/courses/30/lessons/42587
퇴근후 시간 날때마다 풀었습니다.
가능하면 답을 안보고 풀기위해서 노력했습니다.
제일 중요한 것은 `문제를 완벽히 이해하는 것이다`라는 것을 깨달았습니다.
문제의 의도를 파악하지 못해 계속 통과를 5일째 못하다가 아이패드에 그림을 그려가면서 이해하다보니
제가 놓친부분을 발견하고 결국 풀게되었습니다.(아이패드짱_구글 Jamboard짱)
package com.ji.study;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
public class PrinterTest {
@Test
void test() {
Printer test = new Printer();
assertEquals(5, test.solution(new int[] { 1, 1, 9, 1, 1, 1 }, 0));
assertEquals(1, test.solution(new int[] { 2, 1, 3, 2 }, 2));
assertEquals(6, test.solution(new int[] { 2,2,2,1,3,4 }, 3));
}
}
package com.ji.study;
import java.util.ArrayList;
import java.util.List;
public class Printer {
public static void main(String[] args) {
int[] priori = { 1, 1, 9, 1, 1, 1 };
int location = 0;
System.out.println("result : " + solution(priori, location));
}
public static int solution(int[] priorities, int location) {
int answer = 0;
List<int[]> list = new ArrayList<int[]>();
for (int i = 0; i < priorities.length; i++) {
list.add(new int[] {i, priorities[i]});
}
List<int[]> result = getCompareNum(list);
for (int j = 0; j < result.size(); j++) {
if (result.get(j)[0] == location)
answer = j;
}
return answer + 1;
}
public static List<int[]> getCompareNum(List<int[]> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int k = i + 1; k < list.size(); k++) {
// 중요도가 높은 인쇄물이 있을 경우
if (list.get(i)[1] < list.get(k)[1]) {
return getCompareNum(shiftLastIndex(list, i));
}
}
}
return list;
}
// 가장 앞에 있는 대기 목록을 뒤로 이동
public static List<int[]> shiftLastIndex(List<int[]> list, int moveIndex) {
list.add(list.get(moveIndex));
list.remove(moveIndex);
return list;
}
}
728x90
'[개발관련] > 코테준비' 카테고리의 다른 글
[프로그래머스] [1차] 캐시 (0) | 2021.06.13 |
---|---|
동적계획법(Dynamic Programming) (0) | 2021.06.13 |
[백준] DFS와 BFS (0) | 2021.05.01 |
[프로그래머스] 주식 가격 (0) | 2021.04.29 |
[프로그래머스] 타겟 넘버 (0) | 2021.04.25 |