컴굥일지
[BOJ/백준 15312][C++] 이름 궁합 본문
반응형
문제
https://www.acmicpc.net/problem/15312
문제 내용
영어 이름 2개를 입력받아, 두 이름의 궁합을 출력하면 된다.
궁합은 알파벳의 획순을 두고, 인접한 것끼리 계속 더해나가면 되는 방식이다. (1의 자리만 나타낸다)
문제 풀이
먼저, 문제 힌트에 적힌 대로 각 알파벳 별로 획순을 배열에 미리 저장해둔다.
그리고 문자열 두 개를 입력받아, 알파벳을 번갈아가며 저장하면 된다.
이때 알파벳 자체를 저장하기보단, 알파벳의 획순을 저장한다.
그리고 반복문 안에서 양 옆의 숫자와 계속 더해나가면 된다.
원소가 2개만 남았을 때, 결과를 출력하고 반복문을 멈추면 된다.
코드
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//획
int line[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 };
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//입력
string a, b;
cin >> a >> b;
//문제 해결
vector<int>combine;
for (int i = 0; i < a.size(); i++) {
combine.push_back(line[a[i] - 'A']);
combine.push_back(line[b[i] - 'A']);
}
while (1) {
vector<int>tmp;
for (int i = 0; i < combine.size() - 1; i++)
tmp.push_back((combine[i] + combine[i + 1]) % 10);
//결과 출력
combine = tmp;
if (combine.size() == 2) {
cout << combine[0] << combine[1] << '\n';
return 0;
}
}
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 9658][C++] 돌 게임 4 (0) | 2022.04.02 |
---|---|
[BOJ/백준 2294][C++] 동전 2 (0) | 2022.03.30 |
[BOJ/백준 9076][C++] 점수 집계 (0) | 2022.03.24 |
[BOJ/백준 1337][C++] 올바른 배열 (0) | 2022.03.23 |
[BOJ/백준 2011][C++] 암호코드 (0) | 2022.03.22 |
Comments