반응형

 

programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

퇴근후 시간 날때마다 풀었습니다. 

가능하면 답을 안보고 풀기위해서 노력했습니다.

제일 중요한 것은 `문제를 완벽히 이해하는 것이다`라는 것을 깨달았습니다. 

문제의 의도를 파악하지 못해 계속 통과를 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

+ Recent posts