문제
문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < before의 길이 == after의 길이 < 1,000
- before와 after는 모두 소문자로 이루어져 있습니다.
입출력 예
코드
class Solution {
fun solution(before: String, after: String): Int {
var afterArray = ArrayList<Char>()
for(i in 0 until after.length){
afterArray.add(after[i])
}
for(i in 0 until before.length){
if(afterArray.contains(before[i])){
afterArray.remove(before[i])
}
}
if(afterArray.size == 0){
return 1
}else{
return 0
}
}
}
내가 푼 풀이 방식은 새로운 ArrayList를 만들어서 after에 해당하는 문자열을 하나씩 쪼개서 ArrayList에 넣고 before 문자열을 하나씩 쪼개며 만약 ArrayList에 존재한다면 제거하도록 했다.
그래서 만약 ArrayList가 비어있다면 after 문자열을 만들 수 있다는 의미에서 1을 리턴하고 그렇지 않으면 0을 리턴하도록 했다. 다른 사람의 풀이를 보니 너무나도 간단하게 되어있어서 가져왔다.
class Solution {
fun solution(before: String, after: String): Int =
if (before.toList().sorted() == after.toList().sorted()) 1 else 0
}
현재의 문자열을 .toList()를 적용하면 리스트로 변경되고 sorted()를 하면 알파벳 순으로 정렬이 된다.
만약 두 리스트가 동일하다면 1을 다르다면 0을 출력한다.
나는 새로운 배열리스트를 생성하고 반복문을 돌려서 값을 할당했는데 toList() 하나로 내가 원하는 기능을 구현할 수 있다는게 놀라웠다.
기억하고 싶은 부분
- Kotlin에서 문자열을 문자 목록으로 변환하는 표준 솔루션 toList()
var list: List< 자료형 > = 문자열.toList()
https://school.programmers.co.kr/learn/courses/30/lessons/120886
'Algorithm > kotlin' 카테고리의 다른 글
[프로그래머스/Kotlin] 모스부호 (1) (Lv. 0) (0) | 2024.02.09 |
---|---|
[프로그래머스/Kotlin] k의 개수 (Lv. 0) (0) | 2024.02.09 |
[프로그래머스/Kotlin] 2차원으로 만들기 (Lv. 0) (2) | 2024.02.09 |
[프로그래머스/Kotlin] 배열 회전시키기 (Lv. 0) (0) | 2024.02.07 |
[프로그래머스/Kotlin] 문자열 정렬하기 (1) (Lv. 0) (0) | 2024.02.07 |