🗒 문제



📝 나의 문제풀이
class Solution {
fun solution(letter: String): String {
val morse = listOf(".-","-...","-.-.","-..",".","..-.","--.","....","..",".---",
"-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-",
"..-","...-",".--","-..-","-.--","--..")
return letter.split(" ") // 1. 공백 기준으로 모스부호 분리
.map{ morse.indexOf(it) + 'a'.code } // 2. 모스부호 위치를 a부터의 ASCII 코드로 변환
.map{ it.toChar() } // 3. ASCII 코드를 문자로 변환
.joinToString("") // 4. 문자열로 합치기
}
}
- letter.split(" ")
".... . .-.. .-.. ---" → ["....", ".", ".-..", ".-..", "---"]
모스부호 하나씩 분리 - morse.indexOf(it) + 'a'.code
- morse.indexOf(it) → 리스트에서 모스부호 위치 찾기 (0부터 시작)
- 'a'.code → 'a'의 ASCII 값(97)
- 위치 + 97 → 알파벳 ASCII 값으로 변환
- 예: "...." → 7번째 → 7 + 97 = 104 → 'h'
- it.toChar() → ASCII 값을 문자로 변환
- joinToString("") → 문자들을 합쳐서 최종 문자열 반환
단점:
- 모스부호와 알파벳 순서가 바뀌면 바로 고치기 어려움
- 직관적이지 않음 (ASCII 계산)
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
private val dictionary = mapOf(
".-" to "a", "-..." to "b", "-.-." to "c", "-.." to "d", "." to "e", "..-." to "f", "--." to "g", "...." to "h", ".." to "i",
".---" to "j", "-.-" to "k", ".-.." to "l", "--" to "m", "-." to "n", "---" to "o", ".--." to "p", "--.-" to "q", ".-." to "r",
"..." to "s", "-" to "t", "..-" to "u", "...-" to "v", ".--" to "w", "-..-" to "x", "-.--" to "y", "--.." to "z"
)
fun solution(letter: String) = letter.split(" ".toRegex()).map { dictionary[it] }.joinToString("")
}
- dictionary: 모스부호 → 알파벳 매핑
- 직접적으로 어떤 모스부호가 어떤 알파벳인지 명시적
- letter.split(" ".toRegex())
- 공백 기준으로 모스부호 분리
- map { dictionary[it] }
- 각 모스부호를 대응되는 알파벳으로 변환
- joinToString("")
- 최종 문자열 합치기
장점:
- 가독성이 좋고 직관적
- 모스부호와 알파벳 순서 바뀌어도 dictionary만 수정하면 됨
🖊 문제 풀이 시 알면 좋을 것
mapOf(... to ...) 설명
- 개념: 키와 값 쌍으로 이루어진 맵(연관 배열) 생성
- to 키워드: 키 to 값 형태로 쌍을 만듦
예시:
val dictionary = mapOf(
"a" to 1,
"b" to 2,
"c" to 3
)
println(dictionary["b"]) // 2
모스부호 예시:
val morseDict = mapOf(".-" to "a", "-..." to "b")
println(morseDict[".-"]) // "a"
즉, 다른 사람 풀이에서는:
- 문자열을 공백으로 나눔 → 각 모스부호 단위
- map { dictionary[it] } → 모스부호를 알파벳으로 변환
- joinToString("") → 최종 문자열 생성
반응형
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 컨트롤 제트 (0) | 2025.12.23 |
|---|---|
| [프로그래머스] 7의 개수 (0) | 2025.12.22 |
| [프로그래머스] k의 개수 (0) | 2025.12.22 |
| [프로그래머스] 2차원으로 만들기 (0) | 2025.12.22 |
| [프로그래머스] 가까운 수 (0) | 2025.12.22 |