🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(myString: String, pat: String): Int {
val srt = myString.map{ if(it == 'A') 'B' else 'A'}.joinToString("")
return if(srt.contains(pat)) 1 else 0
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(myString: String, pat: String): Int {
return if (myString.map { c -> (if (c == 'A') c + 1 else c - 1).toChar().toString() }.joinToString("").contains(pat)) 1 else 0
}
}
🖊 문제 풀이 시 알면 좋을 것
- 문자 변환 (map):
- 문자열의 각 문자를 변환하기 위해 map을 사용.
- 문자 자체를 조건에 따라 변경('A' → 'B', 'B' → 'A').
- 문자열도 map을 사용할 수 있어요. 코틀린에서 문자열은 Char의 시퀀스로 취급되므로, 문자열에서 map을 사용하면 각 문자에 대해 람다를 적용할 수 있어요.
val str = "abc"
val result = str.map { it.uppercaseChar() } // ['A', 'B', 'C']
println(result) // [A, B, C]
- joinToString 사용:
- map으로 변환한 문자 리스트를 다시 문자열로 합침.
- 문자 포함 여부 확인 (contains):
- 변환된 문자열에서 pat이 포함되어 있는지 검사.
📌 마치며
나의 문제풀이와 다른 사람 문제풀이 비교
항목 | 나의 문제풀이 | 다른 사람의 문제풀이 |
가독성 | if (it == 'A') 'B' else 'A'로 명확하고 직관적 | 문자 연산(c + 1, c - 1)이 다소 난해함 |
간결함 | 코드가 약간 더 길지만 읽기 쉬움 | 변환 로직이 간결하지만 이해가 어려울 수 있음 |
효율성 | 효율적이고 직관적 | 문자 연산으로 약간의 추가 연산 발생 |
적용 상황 | 초보자도 쉽게 이해 가능 | 숙련자나 간결한 코드 선호자에게 적합 |
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 세 개의 구분자 (0) | 2025.01.24 |
---|---|
[프로그래머스] rny_string (0) | 2025.01.24 |
[프로그래머스] 간단한 식 계산하기 (0) | 2025.01.24 |
[프로그래머스] 문자열 잘라서 정렬하기 (0) | 2025.01.24 |
[프로그래머스] x 사이의 개수 (0) | 2025.01.24 |