πŸ“¦ Changgo/🍣 EDOC

[BOJ B1][C++] λ°±μ€€ 15312번: 이름 ꢁ합

선달 2022. 3. 30. 08:46
λ°˜μ‘ν˜•

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

 

15312번: 이름 ꢁ합

μ˜μ–΄ λŒ€λ¬Έμž μ•ŒνŒŒλ²³ 26개의 νšμˆ˜λŠ” μˆœμ„œλŒ€λ‘œ 3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1 둜 μ •ν•œλ‹€. (μΆœμ œμžκ°€ μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ₯Ό μ“°λŠ” 방법이 기쀀이닀)

www.acmicpc.net

 

문제

'이름 ꢁ합'μ΄λž€ 두 μ‚¬λžŒμ˜ 이름을 ν•œ κΈ€μžμ”© λ²ˆκ°ˆμ•„ 써 놓고 획수λ₯Ό κ·Έ μ•„λž˜μ— 적은 λ’€, μΈμ ‘ν•œ 숫자끼리 λ”ν•œ 일의 자리 값을 μ•„λž˜μ— 적어 λ‚˜κ°€λ©΄μ„œ λ§ˆμ§€λ§‰μ— 남은 두 숫자λ₯Ό 보고 ꢁ합이 λ§žλŠ” 정도λ₯Ό μ•Œμ•„λ³΄λŠ” μΌμ’…μ˜ 점이닀.

아직도 'κ·Έλ…€'λ₯Ό μžŠμ§€ λͺ»ν•œ λ‘œλ§¨ν‹°μŠ€νŠΈ μ’…λ―Όμ΄λŠ” μ–΄λŠ λ‚  그녀와 이름 ꢁ합을 ν•œ 번 ν•΄ 보기둜 ν–ˆλŠ”λ°, κ·Έ κ²°κ³ΌλŠ” μΆ©κ²©μ μ΄μ—ˆλ‹€.

이 κ²°κ³Όλ₯Ό λ„μ €νžˆ 받아듀일 수 μ—†μ—ˆλ˜ μ’…λ―Όμ΄λŠ” 이것이 ν‹€λ ΈμŒμ„ 증λͺ…ν•˜κΈ° μœ„ν•΄ μ—΄μ‹¬νžˆ 머리λ₯Ό κ΅΄λ Έκ³ , λ‹€μŒκ³Ό 같은 λ³€λͺ…거리λ₯Ό 생각해 λƒˆλ‹€.

"'κ·Έλ…€'λŠ” ν•œκ΅­μΈμ΄ μ•„λ‹ˆλ‹ˆκΉŒ ν•œκΈ€λ‘œ 이름 ꢁ합을 보면 κ²°κ³Όκ°€ μ΄μƒν•œ 것이 λ‹Ήμ—°ν•˜μ§€! 세계 κ³΅μš©μ–΄μΈ μ˜μ–΄ μ•ŒνŒŒλ²³μœΌλ‘œ 이름을 μ“°λ©΄ κ²°κ³Όκ°€ μ •ν™•ν•˜κ²Œ λ‚˜μ˜¬ κ±°μ•Ό!"

κ·Έλž˜μ„œ μ’…λ―Όμ΄λŠ” μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ‘œ 이름을 써 놓고 이름 ꢁ합을 보렀고 ν•œλ‹€. 그런데, μ’…λ―Όμ΄λŠ” μ†μœΌλ‘œ 계산을 ν•˜λ©΄ μ‹€μˆ˜λ₯Ό ν• κΉŒ λ‘λ €μ›Œ λ‹Ήμ‹ μ—κ²Œ ν”„λ‘œκ·Έλž¨μ„ 짜 달라고 λΆ€νƒν–ˆλ‹€. 쒅민이λ₯Ό λ„μ™€μ£Όμž! μ’…민이가 μ •ν•œ μ•ŒνŒŒλ²³ λŒ€λ¬Έμžμ˜ νšμˆ˜λŠ” νžŒνŠΈλ₯Ό μ°Έκ³ ν•˜μž.

μž…λ ₯

첫 번째 μ€„μ—λŠ” μ’…λ―Όμ΄μ˜ μ˜μ–΄ 이름 Aκ°€ μ£Όμ–΄μ§„λ‹€. 

두 번째 μ€„μ—λŠ” 'κ·Έλ…€'의 μ˜μ–΄ 이름 Bκ°€ μ£Όμ–΄μ§„λ‹€.

β€ŠA와 B λͺ¨λ‘ μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ‘œλ§Œ 이루어진 길이 2 μ΄μƒ 2000 μ΄ν•˜μ˜ λ¬Έμžμ—΄μ΄λ©°, λ‘˜μ˜ 길이가 κ°™μŒμ΄ 보μž₯λœλ‹€. 이름 ꢁ합을 λ³Ό λ•ŒλŠ” A의 첫 κΈ€μžλ₯Ό λ¨Όμ € μ“΄λ‹€κ³  ν•˜μž.

좜λ ₯

이름 κΆν•©μ˜ κ²°κ³Όλ₯Ό 두 자리의 숫자둜 좜λ ₯ν•œλ‹€. (μ‹­μ˜ μžλ¦¬κ°€ 0이어도 두 자리둜 좜λ ₯ν•œλ‹€)

힌트

μ˜μ–΄ λŒ€λ¬Έμž μ•ŒνŒŒλ²³ 26개의 νšμˆ˜λŠ” μˆœμ„œλŒ€λ‘œ 3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1 둜 μ •ν•œλ‹€. (μΆœμ œμžκ°€ μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ₯Ό μ“°λŠ” 방법이 기쀀이닀)

 

풀이

// Authored by : seondal
// 풀이 : https://whkakrkr.tistory.com/
// Co-authored by : -

//#include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

int stroke[26] = {3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1};
vector<int> v;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    string a,b;
    cin >> a >> b;
    
    for(int i=0; i<a.length(); i++){
        v.push_back(stroke[a[i]-'A']);
        v.push_back(stroke[b[i]-'A']);
    }
    
    while(true){
        vector<int> tmp;
        for(int i=0; i<v.size()-1; i++)
            tmp.push_back((v[i]+v[i+1]) % 10);
        v = tmp;
        
        if(v.size() <= 2)
            break;
    }
        
    cout << v[0] << v[1];
    
    return 0;
}
    
/**/
λ°˜μ‘ν˜•