https://www.acmicpc.net/problem/1919
1919번: 애너그램 만들기
두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs
www.acmicpc.net
간만에 백준에 들어가서 문제를 풀었다. 기본기를 다시 다져야겠다는 생각으로 풀었는데 단순하게 생각하면 매우 쉽게 풀리는 문제였다.
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(System.in));
String a = br.readLine();
String b = br.readLine();
int[] c = new int[26];
int[] d = new int[26];
for (int i = 0; i < a.length(); i++) {
c[a.charAt(i) - 'a']++;
}
for (int i = 0; i < b.length(); i++) {
d[b.charAt(i) - 'a']++;
}
int cnt = 0;
for (int i = 0; i < 26; i++) {
if(c[i] > d[i]){
cnt += c[i] - d[i];
} else if (c[i] < d[i]) {
cnt += d[i] - c[i];
}
}
System.out.println(cnt);
}
이렇게 구현을 했지만 구현하고 생각해보니 조금 더 간단한 방법이 있었다.
if 문을 써서 c[i] 가 d[i] 보다 클때 작을때로 비교한 이유가 양수로 하기 위함이였다.
하지만 Math.abs 를 사용하면 절댓값을 반환 하는 역할이기 때문에
for (int i = 0; i < 26; i++) {
cnt += Math.abs(c[i] - d[i]);
}
이렇게 사용해도 될 것 같다.
'Algorithm > Algorithm 문제' 카테고리의 다른 글
[Leetcode] 118 Pascal's Triangle [Java] (0) | 2023.08.20 |
---|---|
[백준] 3273 두 수의 합 [Java] (0) | 2023.05.24 |
[프로그래머스] 1차 보물지도 [Java] (0) | 2023.05.15 |
[백준] 10989 수 정렬하기 3 [Java] (0) | 2023.02.21 |
[백준] 2751 수 정렬하기 2[Java] (0) | 2023.02.21 |