👀 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXMCa8EaVioDFAWv
👊 도전
1. 설계
- 세 문자열의 i번째 문자가 모두 같은 경우, 하나만 다른 경우, 다 다른 경우를 따진다.
2. 구현
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
29
30
31
32
33
import java.util.*;
/**
*
* @author HEESOO
*
*/
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int n=sc.nextInt();
char[] a=sc.next().toCharArray();
char[] b=sc.next().toCharArray();
char[] c=sc.next().toCharArray();
int answer=0;
for(int i=0;i<n;i++)
answer+=frequency(a[i], b[i], c[i]);
System.out.println("#"+test_case+" "+answer);
}
}
public static int frequency(char a, char b, char c) {
if(a==b && b==c && c==a) return 0;
else if(a!=b && b!=c && c!=a) return 2;
else return 1;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- i번째 문자가 같은 개수에 따라 조건을 나눈다
- String a, b, c의 i번째 문자열 비교를 쉽게 하기 위해 char형 배열에 저장한다.
- for문으로 i번째 문자를 체크한다.
- i번째가 모두 같다면 바꿀 필요가 없으므로 0
- 하나만 다르다면 그것을 바꾸면 되므로 1
- 모두 다르다면 특정 하나를 제외한 나머지 두 개를 바꿔야 하므로 2이다.
- 해당 개수만큼 바꿔야할 최소 숫자를 더한 후, 출력한다.