알고리즘 문제풀이

백준 - 돌려 돌려 돌림판! 11504 (Python)

2023. 2. 28. 15:49
목차
  1. 문제설명
  2. 입력
  3. 출력
  4. 예제입력 / 예제출력
  5. 문제이해 및 코드설명
  6. 코드
반응형
[Silver V] 돌려 돌려 돌림판! - 11504

 

문제설명

먹고또자니 <거기 누구세요> 코너에서는 "돌림판"을 돌려 상품을 얻을 수 있다. 이 돌림판은 큰 원형판이 N등분되어있는 형태이다.

N등분 된 각 부분은 0부터 9사이의 숫자가 하나씩 적혀있다. 게임이 시작되면, 임의의 M자리의 수 X와 Y(X ≤ Y)가 주어진다. (단, 이 수는 0으로 시작될 수도 있다.)
그리고 참가자는 돌림판을 힘차게 돌린다. 힘차게 돌던 돌림판이 완전히 멈추게 되는 순간, 12시 방향의 스피너가 특정 부분을 가리키게 될 것이다. 거기서부터 시계방향으로 M칸 연속되는 수를 읽으면 M자리의 수 Z를 얻을 수 있다.

이때 얻은 Z가 X ≤ Z ≤ Y를 만족한다면 게임을 승리하고 Z만원을 얻을 수 있다!

예를 들어, 돌림판이 N = 8 등분되어있고, 시계방향으로 읽었을 때 [3, 7, 8, 3, 1, 9, 2, 7] 과 같다고 하자. X = 200 이고 Y = 311일 경우 "숫자 2"가 적힌 부분부터 시작한다면 Z = 273 으로 X = 200 ≤ 273 ≤ 311 = Y 를 만족하여 게임을 승리한다.

돌림판의 상태와 X, Y가 주어질 때 어느 부분부터 시작하면 게임을 승리할 수 있을 지 알 수 있다. 주어진 조건에 대해서 게임을 승리할 수 있는 가지수를 계산하는 프로그램을 작성하시오.

 

입력

첫 번째 줄에 테스트케이스의 개수 T가 주어진다.

각 테스트케이스의 첫 줄에는 돌림판을 N등분할 정수 N (1 ≤ N ≤ 100)과 X, Y의 길이 M (1 ≤ M ≤ 9, M ≤ N) 이 주어진다. 그리고 다음 3개의 줄에 X의 각 자리수, Y의 각 자리수, 돌림판의 상태가 주어진다.

X와 Y의 각 자리수는 공백으로 구분되어 0~9사이의 숫자가 한자리씩 주어진다.

돌림판의 상태는 어느 부분부터 시계방향으로 읽었을 때 나타나는 순서대로 주어진다. 돌림판의 숫자도 0~9사이의 숫자가 공백으로 구분되어 주어진다.

 

출력

각 테스트케이스에 대하여 한 줄씩 정답을 출력한다.

즉, 돌림판에서 X ≤ Z ≤ Y를 만족하는 M자리의 수 Z가 몇 개가 있는 지를 출력한다. 단, 같은 수라도 시작 부분이 다르다면 다른 가지수로 센다. 예를 들어, X와 Y 사이에 있는 수가 123 밖에 없는 데 돌림판에서 2번 나온다면, 1이 아닌 2를 출력한다.

 

 

예제입력 / 예제출력

 

문제이해 및 코드설명

구현&시뮬레이터 문제 중 난이도가 다소 쉬운문제.

X,Y를 입력받은 후  길이 M자리의 수에서 X와 Y사이의 몇개의 수가 있는지 돌림판에서 개수를 찾는문제이다.

마지막이나 마지막 전에숫자부터 시작해서 다시 처음으로 돌아오는 경우의수를 어떻게 처리하는 점이 포인트이다.

join함수를 사용해서 2 0 0 이런식으로 나온 수를 200으로 합친점도 이 문제의 포인트이다. 

처음봤을때는 어려워보였는데 펜과노트에 하나씩 적으면서 풀어보니 생각보다 간단했던 문제였다.

 

코드

import sys

# 테스트케이스 T , 돌림판등분 N , XY길이 M, X,Y 
T = int(sys.stdin.readline())

# T개수만큼 반복, new_clrcle 리스트 새로작성(가능한 모든 경우를 담음)
for _ in range(T):
    N,M = map(int,sys.stdin.readline().split())
    X = int(''.join(sys.stdin.readline().split()))
    Y = int(''.join(sys.stdin.readline().split()))
    circle = list(sys.stdin.readline().split())
    new_circle = circle + circle[:M-1]
    cnt = 0
    temp = 0
# M개씩 자른부분을 temp로 입력하고 조건만족시 cnt세줌
    for i in range(N):
        temp = int(''.join(new_circle[i:i+M]))
        if X <= temp <= Y:
            cnt +=1
    print(cnt)

 

반응형

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

백준 - 단어 정렬 1181(Python)  (0) 2023.03.01
백준 - 접미사 배열 11656 (Python)  (0) 2023.02.28
백준 - 경로 찾기 11403(Python)  (0) 2023.02.28
백준 ATM 11399 (Python)  (0) 2023.02.28
백준 - 사탕 11256(Python)  (0) 2023.02.28
  1. 문제설명
  2. 입력
  3. 출력
  4. 예제입력 / 예제출력
  5. 문제이해 및 코드설명
  6. 코드
'알고리즘 문제풀이' 카테고리의 다른 글
  • 백준 - 단어 정렬 1181(Python)
  • 백준 - 접미사 배열 11656 (Python)
  • 백준 - 경로 찾기 11403(Python)
  • 백준 ATM 11399 (Python)
coryne
coryne
반응형
coryne
coryne의 정리노트
coryne
전체
오늘
어제
  • 분류 전체보기 (56)
    • python (2)
    • Web programing (1)
    • Linux (3)
    • Deep Learning (0)
    • 기타 (0)
    • 알고리즘 문제풀이 (49)
    • 빅데이터분석기사 (0)
    • 알고리즘 이론 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구현
  • 그래프 탐색
  • 정수론
  • 스택
  • 빅데이터분석기사 실기
  • 너비 우선 탐색
  • machine_learning
  • 자료 구조(data_structures)
  • Python
  • 큐
  • 플로이드-워셜
  • 데이크스트라
  • 빅데이터분석기사
  • 소수 판정
  • 자료 구조
  • 그래프 이론
  • 백준
  • 문자열
  • 수학
  • 깊이 우선 탐색
  • 우선순위 큐
  • EduAtoZ
  • 출처 : eduatoz
  • 자료구조
  • 다이나믹 프로그래밍
  • 공공데이터일경험수련생
  • pandas
  • 정렬
  • 브루트포스 알고리즘
  • 그리디 알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.
coryne
백준 - 돌려 돌려 돌림판! 11504 (Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.