<링크>
https://www.acmicpc.net/problem/13413
<소스코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include<stdio.h> int main() { char c1[100001], c2[100001]; int T; scanf("%d", &T); while (T--) { int N; scanf("%d", &N); scanf("%s", c1); scanf("%s", c2); int wbCnt=0, bwCnt = 0; for (int i = 0; i < N; ++i) { if (c1[i] == 'W' && c2[i] == 'B') ++wbCnt; else if (c1[i] == 'B' && c2[i] == 'W') ++bwCnt; } printf("%d\n", wbCnt < bwCnt ? bwCnt : wbCnt); } } | cs |
<풀이>
백말(W)은 O, 흑말(B)는 X로 표시하면
OXOX
XOXO
이런식으로 되어있을 때, 즉
O X
X 와 O 가 엇갈려있을 때 바꿔주면 된다.
따라서
O
X
랑
X
O
의 개수를 각각 세어서 1번연산을 이용해 한쌍으로 매칭시켜주면 된다.
그 후 다 매칭시키고 나서 더이상 짝지어줄 수 있는 애들이 없으면 그냥 2번 연산을 이용해 바꾼다.
ex)
OXOOXX
XOXOOO
굵은애들은 윗라인 애들을 1번연산으로 맞바꿔주면 된다.
빨간애는 남은 나가리인데 걔는 2번연산으로 바꿔주면된다.
'알고리즘 풀이 > 기타' 카테고리의 다른 글
백준 2621 카드게임 (0) | 2018.08.28 |
---|---|
백준 13414 수강신청 (0) | 2018.08.02 |
백준 10973 이전 순열 (0) | 2018.07.24 |
백준 10972 다음 순열 (1) | 2018.07.24 |
백준 2725 보이는 점의 개수:: 들짐승 (0) | 2018.07.22 |