피너클의 it공부방
백준 15312 이름 궁합 (c++) : 피너클 본문
728x90
반응형
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
단순한 구현 문제다.
string a, b;
vector<int> v;
int alpha[] = { 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 };
입력받을 string a, b와 숫자를 저장할 벡터 v, 각 영어의 획수를 저장한 배열 alpha를 선언한다.
cin >> a >> b;
int i;
for (i = 0; i < a.length(); i++) {
v.push_back(alpha[a[i] - 'A']);
v.push_back(alpha[b[i] - 'A']);
}
값을 입력받은다음 int i를 선언한다.
그후 반복문을 돌리며 v에 a와 b의 획수를 번갈아가며 넣는다.
1 | 3 | 2 | 3 | 2 | 2 |
v에는 다음과 같이 값이 저장된다.
while (1) {
vector<int> a;
for (int i = 0; i < v.size() - 1; i++) {
a.push_back((v[i] + v[i + 1]) % 10);
}
while(1)을 실행한뒤 새로운 벡터 a를 선언한다.
그후 (v의 사이즈 - 1) 만큼 for문을 돌리며 a에 (v[i] + v[i+1]) % 10의 값을 넣어준다.
1 | 3 | 2 | 3 | 2 | 2 |
위를 벡터 a, 아래를 벡터 v라 했을때
4 |
1 | 3 | 2 | 3 | 2 | 2 |
v[0]과 v[1]을 더한 값이 a에 들어가고
4 | 5 |
1 | 3 | 2 | 3 | 2 | 2 |
v[1]과 v[2]을 더한 값이 a에 들어간다.
위의 과정을 계속해서 반복해 a를 채워준다.
if (a.size() == 2) {
cout << a[0] << a[1] << endl;
break;
}
v.clear();
for (int i = 0; i < a.size(); i++) v.push_back(a[i]);
}
만약 a의 사이즈가 2라면 그대로 출력해주고 while문을 빠져나온다.
그후 v안의 값들을 전부 없엔뒤 a값을 v에 전부 넣는다.
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
string a, b;
vector<int> v;
int alpha[] = { 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);
cin >> a >> b;
int i;
for (i = 0; i < a.length(); i++) {
v.push_back(alpha[a[i] - 'A']);
v.push_back(alpha[b[i] - 'A']);
}
while (1) {
vector<int> a;
for (int i = 0; i < v.size() - 1; i++) {
a.push_back((v[i] + v[i + 1]) % 10);
}
if (a.size() == 2) {
cout << a[0] << a[1] << endl;
break;
}
v.clear();
for (int i = 0; i < a.size(); i++) v.push_back(a[i]);
}
}
전체코드다.
728x90
반응형
'백준' 카테고리의 다른 글
백준 1205 등수 구하기 (c++) : 피너클 (0) | 2022.05.13 |
---|---|
백준 9654 나부 함대 데이터 (c++) : 피너클 (0) | 2022.05.12 |
백준 18111 마인크래프트 (c++) : 피너클 (0) | 2022.05.10 |
백준 1106 호텔 (c++) : 피너클 (0) | 2022.05.09 |
백준 1303 전쟁 - 전투 (c++) : 피너클 (0) | 2022.05.08 |
Comments