https://www.acmicpc.net/problem/16968
Problem
- 상도시의 차량 번호판 형식이 주어졌을 때, 가능한 차량 번호판의 개수를 구해보자.
조건
- 번호판에 사용할 수 있는 숫자는 0, 1, 2, ..., 8, 9이다.
- 사용할 수 있는 문자는 a, b, c, d, ..., y, z이다.
- 차량 번호판의 형식은 최대 4글자이고, c와 d로 이루어진 문자열로 나타낼 수 있다.
- c는 문자가 위치하는 자리, d는 숫자가 위치하는 자리이다.
- 같은 문자 또는 숫자가 연속해서 2번 나타나면 안 된다.
SOL
최대 4글자이고, 같은 문자 또는 숫자가 연속해서 2번 나타내면 안되는 문제이다.
조건이 간단하면서도, 막상 구현하려면 생각을 하게되는 문제이다.
이러한 문제들은, 예시를 들어가면서 이해하는게 편하다.예를들어, dddd 가 들어온다면, 10*9*9*9 가지가 있을거다. cddc가 온다면? 26*10*9*26 가지가 있을거다.
순서도를 간략하게 말로 설명하면, 아래와 같이 될거다!
"c"로 시작한다면, 26, "d"로 시작한다면 , 10을 셋팅해주고,
- 뒤에 붙는게 앞의 글자와 다르다면, d냐 c냐에 따라서, 26,10을 곱해주고,
- 뒤에 붙는게 앞의 글자와 같다면, d냐 c냐에 따라서, 25,9를 곱해주게 된다.
#번호판 형식이 주어졌을때, 가능한 번호판의 개수
import sys
input= sys.stdin.readline
car_num=input().rstrip()
digit=10
alphabet=26
if len(car_num) ==1:
if car_num[0] =="c":
print(26)
else:
print(10)
exit(0)
if car_num[0]=="c":
total = 26
else:
total=10
for i in range(1,len(car_num)):
if car_num[i] !=car_num[i-1]:
if car_num[i]=="d":
total*=digit
elif car_num[i]=="c":
total*=alphabet
continue
if car_num[i-1] =="d":
total*=(digit-1)
continue
if car_num[i-1] =="c":
total*=(alphabet-1)
continue
print(total)
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/16922/파이썬] 로마 숫자 만들기 (0) | 2022.02.10 |
---|---|
[백준/16917/파이썬] 양념 반 후라이드 반 (0) | 2022.02.10 |
[백준/17086/파이썬] 아기 상어 2 (0) | 2022.02.09 |
[백준/12015/파이썬] 가장 긴 증가하는 부분 수열2 (0) | 2022.02.08 |
[백준/10814/파이썬] 나이순 정렬 (0) | 2022.02.08 |