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
'코딩테스트(Level 0~1)' 카테고리의 다른 글
[JAVA, Programmers] 직사각형 넓이 구하기(자바) (0) | 2023.02.05 |
---|---|
[JAVA, Programmers] 안전지대(자바) (0) | 2022.12.30 |
[JAVA, Programmers] 구슬을 나누는 경우의 수(자바) (0) | 2022.12.22 |
[JAVA, Programmers] 순서쌍의 개수(자바) (0) | 2022.12.19 |
[JAVA, Programmers] 7의 배수(자바) (0) | 2022.12.17 |