[C++] Kick Start 2021 Round H - Transform the String
영어 문제 풀이도 어색하고 킥 스타트 자체 플랫폼도 어색해서 왕창 돌려보았기 때문에 Attempt가 9나 된다 크하학
#include <iostream>
#include <cmath> // abs
#include <algorithm> // min
using namespace std;
string S, F;
int T;
int main(int argc, char** argv){
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
cin >> T; // 횟수
for(int i=1; i<=T; i++){
int num = 0;
int minNum = 0;
cin >> S >> F; // string 2개 입력받기
for(int j=0; j<S.length(); j++){
int a = S[j] - 'a'; // ASCII
int tmp = 99999; // multiple 비교
for(int k = 0; k<F.length(); k++){
int b = F[k] - 'a'; // ASCII
tmp = min(min((a - b + 26) % 26, (b - a + 26) % 26), tmp); // 정순, 역순
}
num += tmp;
}
cout << "Case #" << i <<": " << num << endl;
}
return 0;
}
구글은 문자열을 참 좋아한다. 문자열 문제 안 푼지가 좀 되어 무려 6번이나 틀렸다. 심지어 3번은 시간 초과... 대체 왜!
이렇게 돌고 도는 숫자를 구할때는 나머지를 사용하면 쉽다. 이건 백준의 뱀 문제를 풀었을 때도 이렇게 풀었는데 아직 익숙하지는 않지만 내것으로 만들어야할 것 같다.
- (a - b + 26) % 26
a = 0, b = 25 이라고 생각해 보자 (a, z가 주어진 경우), 이럴 때 우리가 원하는 값은 1이다.
a - b의 값은 음수인 -25이다. 때문에 전체 알파벳 개수인 26을 더한 후 (음수 방지), 나머지를 구해 원하는 값인 1을 구해준다.
- (b - a + 26) % 26
마찬가지다.
수학적인 생각과 ASCII 값을 사랑하는 구글인 것 같다.
Author And Source
이 문제에 관하여([C++] Kick Start 2021 Round H - Transform the String), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lamknh/C-Kick-Start-Round-H-2021-Transform-the-String저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)