Uknow's Lab.
article thumbnail

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

 

11328번: Strfry

C 언어 프로그래밍에서 문자열(string)은 native한 자료형이 아니다. 사실, 문자열은 그저, 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진 문자열일 뿐이다. 하지만 프로그래

www.acmicpc.net

 

난이도 : 브론즈 2
태그 : 구현, 문자

 

 

설명

두 개의 문자열을 입력받고,

한 문자열을 적절히 재배치하여 다른 문자열을 만들 수 있는지 판단하는 문제입니다.

즉 애너그램인지 판단하는 것이죠.

https://namu.wiki/w/%EC%95%A0%EB%84%88%EA%B7%B8%EB%9E%A8

 

애너그램 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

 

 

애너그램인지 판단하는 것은 간단합니다.

두 문자를 정렬하여 서로 같은지 판단하는 문제입니다.

 

Listen과 Silent는 애너그램일까요?

Listen의 각 글자인 L, i, s, t, e, n을 오름차순으로 정렬해봅시다. eilnst 네요.

Silent의 각 글자인 S, i, l(L), e, n, t를 오름차순으로 정렬해봅시다. eilnst로 같습니다.

즉 두 단어는 애너그램입니다.

 

 

소스코드

fun main() {
    repeat(readln().toInt()) {
        val (str1, str2) = readln().split(" ")
        if (str1.toCharArray().sorted().joinToString("") == str2.toCharArray().sorted().joinToString("")) {
            println("Possible")
        } else {
            println("Impossible")
        }
    }
}

 

String.toCharArray()를 사용해 문자열을 쉽게 Char 배열 형태로 만들 수 있습니다.

이후 sorted로 정렬된 배열을 만들고,

joinToString으로 Char 배열을 문자열로 합친 뒤, 두 문자열을 비교합니다.

(코틀린에서는 ==으로 문자열을 비교할 수 있습니다)

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.