

1919번: 애너그램 만들기백준/문제2023. 12. 1. 13:24
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1919
1919번: 애너그램 만들기
두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs
www.acmicpc.net
언어 : Kotlin
문제 설명 :
두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs의 각 문자들의 순서를 잘 바꾸면 succor이 되기 때문이다.
한 편, dared와 bread는 서로 애너그램 관계에 있지 않다. 하지만 dared에서 맨 앞의 d를 제거하고, bread에서 제일 앞의 b를 제거하면, ared와 read라는 서로 애너그램 관계에 있는 단어가 남게 된다.
두 개의 영어 단어가 주어졌을 때, 두 단어가 서로 애너그램 관계에 있도록 만들기 위해서 제거해야 하는 최소 개수의 문자 수를 구하는 프로그램을 작성하시오. 문자를 제거할 때에는 아무 위치에 있는 문자든지 제거할 수 있다.
- 첫째 줄과 둘째 줄에 영어 단어가 소문자로 주어진다. 각각의 길이는 1,000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어진다.
- 첫째 줄에 답을 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
abbcc xxyybb |
8 |
풀이 :
import java.io.BufferedWriter
import java.io.OutputStreamWriter
import kotlin.math.abs
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
var result = 0
val str1 = IntArray(26) { 0 }
val str2 = IntArray(26) { 0 }
readLine().forEach { str1[it - 'a']++ }
readLine().forEach { str2[it - 'a']++ }
repeat(26) {
if (str1[it] != str2[it]) result += abs(str1[it] - str2[it])
}
bw.write("$result")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
12904번: A와 B (2) | 2023.12.05 |
---|---|
1652번: 누울 자리를 찾아라 (1) | 2023.12.04 |
2864번: 5와 6의 차이 (0) | 2023.12.01 |
1159번: 농구 경기 (1) | 2023.11.30 |
2902번: KMP는 왜 KMP일까? (1) | 2023.11.30 |

@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!