코딩테스트(Level 0~1)

[JAVA, Programmers] A로 B 만들기(자바)

justdoIT0730 2022. 12. 28. 18:44
728x90
728x90

1. 문제 설명

 문자열 before after 매개변수로 주어질 before 순서를 바꾸어 after 만들 있으면 1, 만들 없으면 0 return 하도록 solution 함수를 완성해보세요.

 

2. 제한사항

0 < before 길이 == after 길이 < 1,000

before after 모두 소문자로 이루어져 있습니다.

 

3. 입출력

before after result
"olleh" "hello" 1
"allpe" "apple" 0

 

4. 입출력 설명

- 입출력 #1

"olleh" 순서를 바꾸면 "hello" 만들 있습니다.

 

- 입출력 #2

"allpe" 순서를 바꿔도 "apple" 만들 없습니다.

 

5. 풀이(오답)

class Solution {
    public int solution(String before, String after) {
        String s= "";
		for(int i=before.length(); i>0;i--) {
			s += before.substring(i-1, i);
		}
		if(s.equals(after)) {
			return 1;
		}else {return 0;}
    }
}

???

 입출력 예 에서 olleh를 hello와 비교하는 예제가 나와서 완벽하게 오해하였다.

 

before의 역순 값이 after와 비교하여 동일 여부를 확인하는 것이 아니라

before의 스펠링 위치를 각각 바꾸어서 after와 동일한 지를 확인하는 것이었다..

 

6. 재풀이

import java.util.*;
class Solution {
    public int solution(String before, String after) {
        String[]b=before.split("");
        String[]a=after.split("");
        Arrays.sort(b); Arrays.sort(a);
        String B=""; String A="";
        
        for(int i=0;i<b.length;i++) {
        	B+=b[i]; A+=a[i];
        }
        if(B.equals(A)) {
        	return 1;
        }else {return 0;}
    }
}

 

7. 다른 분의 풀이

import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] a = before.toCharArray();
        char[] b = after.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);

        return new String(a).equals(new String(b)) ? 1 :0;
    }
}

같은 접근 훨씬 짧은 코드;ㄷㄷㄷㄷ

728x90
728x90