문제
https://www.acmicpc.net/problem/17269
시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데 필요한 획수가 주어진다. 예를 들어, 두 사람의 이름인 LEESIYUN, MIYAWAKISAKURA 를 같이 표현했을 때 다음과 같이 먼저 주어진 이름부터 한 글자씩 적는다.
두 사람의 이름을 알파벳 대문자로 표현한 뒤, 한 글자씩 번갈아가며 적는다.
예시 : L M E I E Y S A I W Y A U K N I S A K U R A
예시처럼 이름이 남을 경우엔 뒤에 남은 글자인 S A K U R A를 맨 뒤에 적는다. 그러고 나서 알파벳을 대응하는 숫자로 바꾸고 각 숫자와 그 숫자의 오른쪽 숫자와 더한 것을 밑에 적는다. 더한 숫자가 10이 넘을 경우엔 일의 자리 수만 남긴다. 이 과정을 반복하여 숫자가 2개만 남았을 때 남은 숫자가 두 사람의 궁합이 좋을 확률이 된다.
입출력
입력
첫 번째 줄에 이름의 길이 N과 M을 받는다. (2 ≤ N, M ≤ 100)
다음 줄에 이름 A와 B를 입력받는다. 이름은 반드시 알파벳 대문자만 주어진다.
출력
A와 B의 이름궁합이 좋을 확률을 %로 출력한다. 단, 십의 자리가 0일 경우엔 일의 자리만 출력한다.
예제 입력 1
8 14 LEESIYUN MIYAWAKISAKURA
예제 출력 1
27%
예제 입력 2
2 2 AB CD
예제 출력 2
77%
예제 입력 3
3 2 BOJ IN
예제 출력 3
1%
코드
dicn={"A":3,"B":2,"C":1,"D":2,"E":4,"F":3,"G":1,"H":3,"I":1,"J":1,"K":3,"L":1,"M":3,"N":2,"O":1,"P":2,"Q":2,"R":2,"S":1,"T":2,"U":1,"V":1,"W":1,"X":2,"Y":2,"Z":1}
N,M = map(int,input().split())
A,B = input().split()
result=[]
i=0
while i!=max(N,M):
if i<N:
result.append(dicn.get(A[i]))
if i<M:
result.append(dicn.get(B[i]))
i+=1
for i in range(N+M-2):
tmp=[]
for j in range(len(result)-1):
tmp.append((result[j]+result[j+1])%10)
result=tmp
print(str(result[0]*10+result[1])+"%")
'Algorithm and PS > 백준(파이썬)' 카테고리의 다른 글
백준 - 16165 걸그룹 마스터 준석이 (파이썬) (0) | 2020.06.10 |
---|---|
백준 - 17224 APC는 왜 서브태스크 대회가 되었을까? (파이썬) (0) | 2020.06.10 |
백준 - 17389 보너스 점수 (파이썬) (0) | 2020.06.09 |
백준 - 2480 주사위 세개 (파이썬) (0) | 2020.06.08 |
백준 - 1463 1로 만들기 (파이썬) (0) | 2020.06.08 |
댓글