[SWEA] 문자열 변경하기

문제 보러가기

제한사항

두 번째 줄에는 문자열 T가 주어진다. 두 문자열은 모두 ‘a’혹은 ‘b’만으로 이루어져 있다.

두 문자열의 길이는 1이상 100,000 이하이며, 가지고 있는 ‘a’의 수와 ‘b’의 수가 서로 같다.

첫번째 생각

쉽게 생각하면 풀수 있다.

S와 T의 a의 위치를 저장하고 인덱스별로 비교해주는 방법으로 해결한다.

하지만 통과하고 보니

-1처리를 안해주었는데 통과한 것을 보아 테스트케이스가 적은 문제여서 통과했었다고 생각한다.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.ArrayList;
import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for(int tc=1;tc<=T;tc++) {
		 char[] s = sc.next().toCharArray();
         char[] t = sc.next().toCharArray();
         ArrayList<Integer> sl = new ArrayList<>();
         ArrayList<Integer> tl = new ArrayList<>();
         long count = 0;
         for (int i = 0; i < s.length; i++) {
             if(s[i] == 'a') 
            	 sl.add(i);
             if(t[i] == 'a')
            	 tl.add(i);
         }
         for (int i = 0; i < sl.size(); i++) {
             count += (long)Math.abs(sl.get(i)-tl.get(i));
         }
         System.out.println("#"+tc+" "+count);
		}
	}

}