2014년 8월 24일 일요일

PCOMPLETE

AOJ PCOMPLETE

SOL)
문자열의 양끝점을 기준으로 하나씩 칸을 옮겨가며 어떤 문자를 넣을지 결정하면 된다.
if 양쪽 '?' : 가중치가 작은 값으로
if 한쪽 '?' : '?'가 아닌 다른 문자열을 넣어준다.
else continue

[-] Collapse
#include<cstdio>
#include<algorithm>
char arr[1000];
int val[200];
int main(){
    int t; scanf("%d", &t);
    while (t--){
        int size, a, b, ans = 0; scanf("%d%s%d%d", &size, arr, &a, &b);
        val['a'] = a; val['b'] = b;
        for (int s = 0, e = size - 1; s <= e; s++, e--){
            if (arr[s] == '?' && arr[e] == '?'){
                if (s == e) ans += std::min(a, b);
                else ans += 2 * std::min(a, b);
            }
            else if (arr[s] == '?')
                ans += val[arr[e]];
            else if (arr[e] == '?')
                ans += val[arr[s]];
        }
        printf("%d\n", ans);
    }
}

댓글 없음:

댓글 쓰기