알고리즘/백준

[백준/Swift] 1919번: 애너그램 만들기

녕이 2022. 12. 13. 18:20
728x90

 

https://www.acmicpc.net/problem/1919

 

1919번: 애너그램 만들기

두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs

www.acmicpc.net

 

문자열에 속한 문자 개수를 카운팅 하고, 두 문자열 사이 차이 값을 answer에 넣어줬다.

처음엔 contains를 사용해서 속해있으면 answer += 1 하고 제거하는 식으로 생각했는데

같은 알파벳이 여러번 들어갈 수 있으므로 이 방법은 안된다...!!

역시 알파벳 배열 사용하는게 편하군~

 

 

import Foundation

/*
 철자의 순서를 뒤바꾸어 같아질 수 있는 두 단어 == 애너그램 관계
 */

var a = readLine()!
var b = readLine()!
var numberA = Array(repeating: 0, count: 26)
var numberB = Array(repeating: 0, count: 26)
var answer = 0
for aa in a { numberA[Int(UnicodeScalar(String(aa))!.value) - Int(UnicodeScalar("a").value)] += 1 }
for bb in b { numberB[Int(UnicodeScalar(String(bb))!.value) - Int(UnicodeScalar("a").value)] += 1 }
for i in 0..<26 {
    answer += abs(numberB[i] - numberA[i])
}
print(answer)

 

 

728x90