[파이썬/python] 백준 - 14651 걷다보니 신천역 삼 (Large)

2025. 7. 20. 11:40·알고리즘
반응형

문제

https://www.acmicpc.net/problem/14651


문제 설명

  1. 3개의 숫자(0,1,2)만 가지고 N자리 3의 배수를 만든다.
  2. N자리로 만들 수 있는 배수의 개수를 구한다.

 


풀이

(0,1,2) 세 가지 숫자로 만들어지는 숫자는 3으로 나누었을 때 나머지가 0,1,2만 나오게 된다.

따라서 나머지가 동일한 숫자 별로 나누어서 보면, 규칙을 찾을 수 있다.

간단하게 예시를 들어보자.

 

나머지 0 1 2
N = 2 12, 21 10, 22 11, 20
N = 3 120, 210, 102, 222, 111, 201 ,,, ,,,

N = 2일 때 나오는 각 나머지 별 숫자의 개수는 2개이다. 결국에는 뒤에 숫자가 돌림이 되기 때문에 각 나머지 별 숫자는 동일하게 생성된다. 여기서 우리가 알아야 할 정보는 나머지가 0인 수(3의 배수)이다.

N = 3일 때 나머지가 0인 숫자를 보면 N = 2일 때 나온 수에 0,1,2를 붙인 수 이다. 결국에는 이전에 나온 수에 맞게 0,1,2를 붙이게 되면 무조건 나머지를 0으로 만들 수 있게 된다.

즉 N = a일 때 A개라면, N = a+1일 때 3*A개이다.

이를 일반화 해보게 되면,

$N = 2$일 때    $2$개

$N = 3$일 때    $2*3$개

$N = 4$일 때   $2*3*3$개

... 

$N = A$일 때 $2*3^{N-2}$개

즉 정답은 $2*3^{N-2}$으로 일반화가 가능하다.

 

  1. $2*3^{N-2}%MOD$을 출력한다.

코드

import sys
input = sys.stdin.readline

MOD = 1000000009
N = int(input())
if N == 1:
    print(0)
    exit()
print(2*3**(N-2)%MOD)

시간복잡도

  • 단순 수식으로 계산되기 때문에 $O(1)$이다. 
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 - 11562 백양로 브레이크  (0) 2025.07.22
[파이썬/python] 백준 - 18430 무기 공학  (0) 2025.07.21
[파이썬/python] 백준 - 6219 소수의 자격  (2) 2025.07.19
[파이썬/python] 백준 - 1813 논리학 교수  (1) 2025.07.18
[파이썬/python] 백준 - 19538 루머  (1) 2025.07.17
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 - 11562 백양로 브레이크
  • [파이썬/python] 백준 - 18430 무기 공학
  • [파이썬/python] 백준 - 6219 소수의 자격
  • [파이썬/python] 백준 - 1813 논리학 교수
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (144)
      • 알고리즘 (124)
      • Java (2)
      • 자기개발 (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    completablefuture
    인프런
    백준
    python
    OS
    컴퓨터구조
    async
    파이썬
    알고리즘
    java
    컴퓨터 구조
    Redis
    작심삼일 챌린지
    springboot
    SMTP
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 - 14651 걷다보니 신천역 삼 (Large)
상단으로

티스토리툴바