developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 통계학
  • 삼성코테자바풀이
  • c++디자인패턴
  • c++ 빌더 패턴
  • 시계열분석
  • 카카오코테
  • 통계분석
  • 운영체제인터럽트
  • Arima
  • 시계열
  • 데이터분석
  • BOJ파이썬풀이
  • 카카오코테java풀이
  • 코테파이썬
  • 삼성코테자바꿀팁
  • 삼성코테파이썬준비
  • 삼성코테파이썬풀이
  • AR모형
  • SW역량테스트파이썬
  • 삼성코테기출자바풀이
  • MA모형
  • 삼성코테준비
  • SW역량테스트파이썬풀이
  • 백준파이썬풀이
  • 삼성코테구현풀이
  • 삼성코테기출
  • 삼성코테자바준비
  • 삼성코테구현문제추천
  • ARIMA모형
  • 삼성코테파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

알고리즘/알고리즘문풀

BOJ - 프린터 큐 1965번 (python)

2021. 9. 25. 15:51

❓ 문제 - 백준 프린터 큐 1965번 - python 풀이법

출처 

(https://www.acmicpc.net/problem/1966)

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

 

📝 문제해결법

1. 이 문제의 핵심은 Queue를 이용하는 것이다.

  • 우선 테스트케이스 안에서 queue에 넣을 숫자가 1개라면 1을 출력
  • 만약 테스트케이스 안에서 queue에 넣을 숫자가 여러 개라면 queue에 해당 숫자의 중요도와 인덱스를 append
  • queue가 빌 때까지 while문을 돌면서 queue에서 중요도랑 index를 popleft하고 queue에 남은 숫자들 중에 중요도의 최대값을 찾아서 queue에서 popleft한 중요도가 더 크거나 같다면 만약 index가 빠져나간 순서가 궁금한 index와 동일한지 살피고 동일하다면 count 출력하고 break, 동일하지 않다면 count를 1 증가
  •  queue에 남은 숫자들 중에 중요도의 최대값을 찾아서 queue에서 popleft한 중요도가 더 큰지 비교해서 만약 queue에서 popleft한 중요다가 더 작다면 다시 queue에 중요도와 index를 넣어줌

 

💻 소스코드

from collections import deque

for tc in range(int(input())):
    n, m = map(int, input().split())
    if n == 1:
        data = int(input())
        print(1)
    else:
        data = list(map(int, input().split()))
        queue = deque()
        for d in range(len(data)):
            queue.append((data[d], d))
        count = 1
        while queue:
            d, index = queue.popleft()
            max_value = 0
            for k in range(len(queue)):
                max_value = max(queue[k][0], max_value)
            if d >= max_value:
                if index == m:
                    what = True
                    print(count)
                    break
                else:
                    count += 1
            else:
                queue.append((d, index))

 

 

 

🧐 Ellen's Thinking

n의 범위가 1<=n<=10 였기때문에 최대값으로 해결할 수 있었다.

 

 

'알고리즘 > 알고리즘문풀' 카테고리의 다른 글

BOJ - 인구 이동 16234번 (python)  (0) 2021.10.04
BOJ - 연구소 14502번 (python)  (0) 2021.10.01
BOJ - 탑 2493번 (python)  (0) 2021.09.23
BOJ - 괄호 제거 2800번 (python)  (2) 2021.09.22
BOJ - 스택 수열 1874번 (python)  (0) 2021.09.06
    '알고리즘/알고리즘문풀' 카테고리의 다른 글
    • BOJ - 인구 이동 16234번 (python)
    • BOJ - 연구소 14502번 (python)
    • BOJ - 탑 2493번 (python)
    • BOJ - 괄호 제거 2800번 (python)
    developer-ellen
    developer-ellen

    티스토리툴바