[프로그래머스][Level2][Java] 프린터

2022. 3. 18. 18:52·프로그래머스/Level 2

문제

 

 

풀이과정

public class Solution12 {                       //프린터 문제
    class Printer{                              //프린터의 index위치와 중요도를 담은 class Printer생성
        int lo;
        int priority;
        public Printer(int lo, int priority){
            this.lo = lo;
            this.priority = priority;
        }
    }

    public int solution(int[] priorities, int location) {
        int answer = 0;
        Queue<Printer> q = new LinkedList<>();  //프린터의 정보를 담을 큐 생성
        for(int i = 0; i < priorities.length; i++){ //큐에 프린터의 정보들을 추가
            q.add(new Printer(i,priorities[i]));
        }

        while(!q.isEmpty()){                    //큐에 값이 남아있을경우
            Printer p = q.poll();               //p에 큐에서 제일 앞의 값을 빼내서 저장
            for(Printer x : q){
                if(x.priority > p.priority){    //p의 중요도보다 남아있는 큐의 중요도가 더 클 경우,
                    q.add(p);                   //p를 다시 큐에 추가하고
                    p = null;                   //p를 null로 만든 뒤,
                    break;                      //반복문 탈출
                }
            }
            if(p != null) {                     //만약 p가 null이 아닐 경우(p의 중요도가 제일 클 경우)
                answer++;                       //인쇄횟수 1증가
                if (p.lo == location) {         //만약 p의 위치가 우리가 찾는 위치일 경우
                    return answer;              //그때의 인쇄 횟수를 return
                }
            }

        }
        return answer;
    }
}

우선 이 문제는 솔직히 어떻게든 풀려면 풀 수는 있는 문제이지만 최대한 덜 복잡한 코드로 푸는 것이 관건인 문제인 것 같다.

그래서 원래는 프린터의 priority나 location을 따로 생각해서 풀려고 했으나 그냥 Printer클래스를 생성해서 하나로 묶어서 풀었다.

프린터의 기존의 위치를 lo라는 변수에 넣고 프린터의 중요도를 priority라는 변수에 넣어서 묶어버렸고,

그리고 Printer클래스를 제네릭타입으로 가지는 큐를 생성했고, 그런 큐에 프린터의 정보를 순서대로 넣었다.

그리고 프린터의 중요도를 비교해서 문제에서 요구하는 방식으로 프린트를 하는 알고리즘을 while문에 만들었다.

자세한 풀이는 주석에 적어놓았다.

저작자표시 비영리 (새창열림)

'프로그래머스 > Level 2' 카테고리의 다른 글

[프로그래머스][Level2][Java] 더 맵게  (0) 2022.03.23
[프로그래머스][Level2][Java] 주식가격  (0) 2022.03.21
[프로그래머스][Level2][Java] 124 나라의 숫자  (0) 2022.03.12
[프로그래머스][Level2][Java] 다음 큰 숫자  (0) 2022.03.11
[프로그래머스][Level2][Java] 땅따먹기  (0) 2022.03.10
'프로그래머스/Level 2' 카테고리의 다른 글
  • [프로그래머스][Level2][Java] 더 맵게
  • [프로그래머스][Level2][Java] 주식가격
  • [프로그래머스][Level2][Java] 124 나라의 숫자
  • [프로그래머스][Level2][Java] 다음 큰 숫자
BvrPark
BvrPark
코드 퍼즐과 개발 일상
  • BvrPark
    비버의 개발 일지
    BvrPark
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • JAVA (7)
        • 메서드 외울 것 (2)
      • 프로그래머스 (56)
        • 총 풀이 코드(깃허브) (1)
        • Level 1 (22)
        • Level 2 (33)
      • 백준 알고리즘(단계 별) (16)
        • 총 풀이 코드(깃허브) (1)
        • 1. 입출력과 사칙연산 (2)
        • 2. if 문 (2)
        • 3. for문 (1)
        • 4. while문 (2)
        • 5. 1차원 배열 (3)
        • 6. 함수 (1)
        • 7. 문자열 (1)
        • 8. 기본수학 1 (3)
      • 백준 알고리즘(solved.ac) (9)
        • 총 풀이 코드(깃허브) (1)
        • class2 (8)
      • LeetCode 문제 풀이 (4)
        • 총 풀이 코드(깃허브) (1)
        • Easy (3)
      • 코드업 알고리즘 (7)
      • git과 github사용법 (4)
      • html, css, javaScript (2)
      • 프로젝트 (11)
        • 순수 Java 프로젝트 (2)
        • 쇼핑몰 프로젝트 (2)
        • 게시판 프로젝트 (5)
        • 근태관리 프로젝트 (2)
      • 커피타임 (2)
        • 2023년 (2)
        • 2024년 (0)
  • 블로그 메뉴

    • 링크

      • 포트폴리오
      • 깃허브
    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • Designed By정상우
    BvrPark
    [프로그래머스][Level2][Java] 프린터
    상단으로

    티스토리툴바