알고리즘/백준

[백준/c++] 18238번: ZOAC 2

녕이 2022. 7. 9. 12:03
728x90

 

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

 

18238번: ZOAC 2

2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해

www.acmicpc.net

 

첫 번째 시작은 A이므로 cur에 넣어준다. 입력받은 문자열을 돌면서 각 문자들과의 길이를 알아내야 하는데

cnt1에 목표 문자(s[i])와 현재 문자(cur) 사이의 길이를 넣어주고 (오른쪽으로 돌아가기)

cnt2에 반대로 갔을 경우의 길이를 넣어준다. (왼쪽으로 돌아가기)

둘 중에 더 작은 값을 ans 답 변수에 넣어주고 cur를 갱신해준다.

 

 

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    string s;
    cin >> s;
    
    int cnt1 = 0; int cnt2 = 0;
    int ans = 0;
    char cur = 'A';
     
    for(int i=0; i<s.size(); i++){
        cnt1 = abs(s[i] - cur); //현재 위치의 문자와의 목표 문자(s[i])와 길이
        cnt2 = 26 - cnt1; //반대 방향
        
        ans += min(cnt1, cnt2);
        cur = s[i];
        
    }
    cout << ans << '\n';
    return 0;
}

 

 

 

 

 

 

 

728x90