언어/Java

Java(자바) 알고리즘 - 문자열로 서로 다른 단어 만들어내기(Anagram)

[좋은사람] 2017. 12. 25. 18:34

Java(자바) 알고리즘 - 아나그램(Anagram) 설명

 

① Java replaceAll, toCharArray, sort 함수를 이용했어요.

② 소문자로 변환 후 정렬이 핵심이예요.

③ 예를들어 elivs 는 = lives  basic = isabc 와 같이 구성요소가 같으면 아나그램(Anagram)


 

Java(자바) 알고리즘 -  아나그램(Anagram) 소스 코드

 

원본코드

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.Arrays;
 
public class AnagramTest {
 
    public static void isAnagram(String a1, String a2){
 
        //공백 제거
        a1 = a1.replaceAll("\\p{Z}""");
        a2 = a2.replaceAll("\\p{Z}""");
 
        //두 문자열의 길이를 미리 체크
        if ( a1.length() != a2.length() ) {
            System.out.println("결과 : 두 문자열의 길이가 다릅니다.");
            return;
        }
 
        //소문자 변환 + 배열 변환
        char[] c1 = a1.toLowerCase().toCharArray();
        char[] c2 = a2.toLowerCase().toCharArray();
 
        //Arrays.sort() 오름 차순 정렬
        Arrays.sort(c1);
        Arrays.sort(c2);
 
        //String 변환
        String sc1 = new String(c1);
        String sc2 = new String(c2);
 
        //객체 내용을 비교
        if( sc1.equals(sc2) ){
            System.out.println("결과 : 아나그램 성립!");
        } else {
            System.out.println("결과 : 아나그램 비성립!");
        }
    }
 
    public static void main(String[] args) {
 
        AnagramTest anagram = new AnagramTest();
 
        //Test1
        anagram.isAnagram("Basic","is ABC");
        //Test2
        anagram.isAnagram("Basic","is ABCD");
        //Test3
        anagram.isAnagram("Basic","is ABD");
    }
}
cs


실행화면



Java(자바) 알고리즘 -  아나그램(Anagram) 소스 다운


AnagramTest.zip


  (Java)로 작성한 후 같은 내용을 Python(파이썬) 언어로 작성해 보시면 더욱 좋을 것 같습니다.