본문 바로가기
코딩테스트

[프로그래머스] 문자열 바꿔서 찾기

by liz_devel 2025. 1. 24.

🗒 문제


📝 나의 문제풀이

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)이 다소 난해함
간결함 코드가 약간 더 길지만 읽기 쉬움 변환 로직이 간결하지만 이해가 어려울 수 있음
효율성 효율적이고 직관적 문자 연산으로 약간의 추가 연산 발생
적용 상황 초보자도 쉽게 이해 가능 숙련자나 간결한 코드 선호자에게 적합

 

 

반응형