문제) 문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한사항)
- 0 < before의 길이 == after의 길이 < 1,000
- before와 after는 모두 소문자로 이루어져 있습니다.
입출력 예)
before | after | result |
"olleh" | "hello" | 1 |
"allpe" | "apple" | 0 |
입출력 예 설명)
입출력 예 #1
- "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.
입출력 예 #2
- "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
풀이)
1. answer, ArrayList 선언 (주어진 after 문자열을 List 형식으로 변환시킴)
2. before의 문자열만큼 반복하면서
3. i 값에 해당하는 before 문자가 after 문자열에 없다면
4. i 값에 해당하는 before 문자가 list에 없다면
5. list에서 해당 index의 문자를 지우기
6. list의 size가 0이면 만들 수 있는거고 아니면 만들 수 없음
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Solution {
public int solution(String before, String after) {
int answer = 0;
ArrayList<String> list = (ArrayList<String>) Stream.of(String.valueOf(after).split("")).collect(Collectors.toList());
for(int i=0; i<before.length(); i++) {
if(after.indexOf(String.valueOf(before.charAt(i))) != -1) {
if(list.indexOf(String.valueOf(before.charAt(i))) != -1) {
list.remove(list.indexOf(String.valueOf(before.charAt(i))));
}
}
}
answer = list.size() == 0 ? 1 : 0;
return answer;
}
}
if문은 왜 한줄에 안 썼는지요. ..?ㅋ ㅋ
이것저것 고치다가 같은 조건인 걸 망각 해부렀나보다...ㅠ