티스토리 뷰

반응형


#. Problem

* The copyright in this matter is in BOJ



#. Resolution Process

  1. Read and understand problem

  2. Redefine the problem + abstract

  3. Create solution plan (select Algorithm, Data structure)

  4. Prove the plan (check performance time and usage memory)

  5. Carry out the plan

  6. Look back on the plan and find a way to improve it


#. Solve

1. 두 사람의 이름을 한 글자씩 번갈아가며 적는 단계

2. 이름이 남을 경우 뒤에 남은 글자를 맨 뒤에 적는 단계

3. 알파벳에 대응하는 숫자로 바꾸는 단계

4. 숫자가 2개만 남을 때까지 각 숫자와 그 숫자의 오른쪽 숫자와 더한 값을 연산


#. Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
alpa = [3,2,1,2,4,3,1,3,1,1,3,1,3,2,1,2,2,2,1,2,1,1,1,2,2,1]
 
N, M = map(int, input().split())
A, B = input().split()
 
AB = ""
min_len = min(N, M)
for i in range(min_len):
    AB += A[i] + B[i]
 
AB += A[min_len:] + B[min_len:]
 
res = [alpa[ord(i) - ord('A')] for i in AB]
 
for i in range(N+M-2):
    for j in range(N+M-1-i):
        res[j] += res[j+1]
 
print("{}%".format(res[0] % 10 * 10 + res[1] % 10))
cs


line 3) map을 사용하여 공백이 있는 입력값을 입력받고 int 형으로 변환시켜준다.

line 4) 마찬가지로 공백이 있는 문자열을 입력받는다.

line 6) A와 B의 이름을 합친 결과 변수

line 7) 두 문자열 중 작은 문자열의 길이를 이용해서 한 글짜씩 번갈아가며 AB 변수에 저장

line 8~9) 작은 문자열의 길이 기준으로 두 분자열을 번갈아가며 저장

line 11) 더 긴 문자열은 출력이 덜 되었을 것이니 남은 문자열을 뒤에 추가

line 13) 알파벳에 대응하는 숫자로 변경 (ord 활용)

line 15~17) 마지막에 두 개의 숫자를 남겨야 하므로 N+M-2 만큼 반복

line 16) 초기 상태에서 한 번 수행했을 때, 

     N+M-1이고 수행이 증가할수록 연산 횟수가 줄어드므로 N+M-1-i 까지 반복

line 17) 첫 번째 idx + 두 번째 idx

line 19) 10이 넘을 경우 일의 자리 수만 남기는 과정을 거치지 않았기 때문에,

     출력 과정에서 일의 자리를 구해준 후 연산해주는 과정이 필요



반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday