[프로그래머스] 모스부호 (1)

Sdoubleu·2023년 4월 11일
0

프로그래머스

목록 보기
22/34
post-thumbnail

문제


내가 쓴 풀이

class Solution {
    fun solution(letter: String): String {   
        val morse = arrayListOf<String>(
        ".-","-...","-.-.","-..",".", // a = 97 b c d e
        "..-.","--.","....","..",".---", // f g h i j
        "-.-",".-..","--","-.","---", // k l m n o
        ".--.","--.-",".-.","...","-", // p q r s t
        "..-","...-",".--","-..-","-.--", // u v w x y
        "--..") // z
        
        return letter.split(" ")
        .map{ (morse.indexOf(it) + 97 ).toChar() }
        .joinToString("")
    }
}

입력받은 문자열을 공백을 기준으로 나누게 되면

이렇게 되는데 모스 부호를 문자열 리스트에서 인덱스를 구한다음
아스키코드 값을 더한다음에 문자 하나하나 map에 들어가기 때문에 toChar()로 바꾸고나서
joinToString을 이용해서 문자열 하나로 바꿔줬다


다른 사람 풀이

class Solution {
    val morse = 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(" ")
        .joinToString(
            separator = "",
            transform = morse::getValue,
        )
}

map 을 이용해서 key의 입력값으로 value로 바꾸고 joinToString으로 문자열로 연결시켜줬다

profile
개발자희망자

0개의 댓글