-
728x90
문제 설명
문자열
before
와after
가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.제한 사항
- 0 <
before
의 길이 ==after
의 길이 < 1,000 - before와 after는 모두 소문자로 이루어져 있습니다.
답안
import java.util.*; class Solution { public int solution(String before, String after) { String[] arrB = before.split(""); String[] arrA = after.split(""); Arrays.sort(arrB); Arrays.sort(arrA); for(int i=0; i<arrB.length; i++) { if(!arrA[i].equals(arrB[i])) { return 0; } } return 1; } }
순서를 어떻게 바꿔야하나 고민하다가 두 문장 다 정렬 했을 때 모든 원소가 동일해야 한다는걸 깨달았다.
그래서 두 문장 모두
split()
을 이용해서String
배열로 만든 다음Arrays.sort()
통해 원소를 정렬한다.그리고 for문을 돌면서 원소를 비교하고 만약 다르다면 0를 리턴하고 for문을 빠져나오면 1을 리턴한다.
근데 for문을 돌지 않고도 답을 도출해내는 방법도 있다.
import java.util.*; class Solution { public int solution(String before, String after) { String[] arrB = before.split(""); String[] arrA = after.split(""); Arrays.sort(arrB); Arrays.sort(arrA); return String.join("", arrB).equals(String.join("",arrA))? 1:0; } }
배열로 만들어서 정렬하는 것까진 동일하지만 정렬된 배열을
String
타입으로 변환하여 동일 유무를 파악한다.만약 동일하다면 1, 다르다면 0을 리턴한다.
참고
문자열.split(구분자)
: 문자열을 입력한 구분자에 따라 구분하여 배열로 반환, 구분자가 없는 경우 한글자씩 떼서 배열로 반환Arrays.sort(배열)
: 배열을 오름차순으로 정렬문자열.eqauls(문자열)
: 두개의 문자열의 값을 비교하여 동일하면 true, 다르다면 false를 리턴String.join("사이에 넣을 문자열", 배열)
: 배열 원소 사이 사이에 입력한 문자열을 넣어 하나의 문자열로 리턴
728x90'algorithm' 카테고리의 다른 글
자바 알고리즘 - 로그인 성공? (0) 2023.09.07 자바 알고리즘 - 이진수 더하기 (0) 2023.09.06 자바 알고리즘 - k의 개수 (0) 2023.09.06 자바 알고리즘 - 중복된 문자 제거 (0) 2023.09.05 자바 알고리즘 - 삼각형의 완성조건(1) (0) 2023.09.05 - 0 <