본문 바로가기

프로그래머스 코딩(자바)/Level 0

Programmers Level 0 - A로 B 만들기

728x90

문제 설명

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


제한사항
  • 0 < before의 길이 == after의 길이 < 1,000
  • before와 after는 모두 소문자로 이루어져 있습니다.
 

입출력 예beforeafterresult
before after result
"olleh" "hello" 1
"allpe" "apple" 0

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

 

1
2
3
4
5
6
7
8
9
10
11
import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] ar1 = before.toCharArray();
        Arrays.sort(ar1);
        char[] ar2 = after.toCharArray();
        Arrays.sort(ar2);
        int answer = Arrays.equals(ar1, ar2) ? 1 : 0;
        return answer;
    }
}

 

 

  입력된 두개의 문자열을 문자 단위로 정렬해서 같으면 만들 수 있는 것이다.

  toCharArray()로 문자 배열로  만들고

  Arrays.sort()로 정렬하고

  Arrays.equals()로 동일한 배열인지 판단한다.  

 

1
2
3
4
5
6
7
8
9
import java.util.stream.Collectors;
class Solution {
    public int solution(String before, String after) {
        return before.chars().sorted().boxed().collect(Collectors.toList())
               .equals(
                  after.chars().sorted().boxed().collect(Collectors.toList())
               ) ? 1 : 0;
    }
}
 

 

  문자열을 IntStream으로 만들어 정렬하고 다시 List로 만든다.
  list.equals(list2)를 이용하여 일치 여부를 판단한다.
  삼항 연사자를 이용하여 일치하면 1을 아니면 0을 리턴한다.

728x90