[Kotlin] 백준 5622번 다이얼 with 코틀린

: ) YOUNG·2022년 5월 2일
2

Kotlin 알고리즘

목록 보기
4/28
post-thumbnail

문제

백준 5622번
https://www.acmicpc.net/problem/5622


상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.


생각하기

문제 자체에 숫자와 문자가 결합된 내용만 봐도
아스키코드를 떠올릴 수 있다.

아스키코드표는 검색하면 쉽게 찾아 볼 수 있다.
아스키코드표에 있는 값을 사용해서 시간에 해당하는 값을 얻을 수 있으면 된다.

동작

var arr = intArrayOf(3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10);


fun check_num(num : Char) :Int {
    var result = arr[num.toInt() - 65];

    return result
} // End of check_num2

문자열 3개에서 4개 단위로 이루어진 값을
아스키코드 대문자의 첫번째 'A'의 값인 65를 빼면 0부터 시작할 수 있다.

이 값을 인덱스 값으로 사용해서 원하는 시간을 배열에서 가져와서 시간의 총합을 출력하면 정답이 된다.




코드


import java.io.*;

var arr = intArrayOf(3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10);

fun main() {
    var br = BufferedReader(InputStreamReader(System.`in`))
    var result = 0;

    var str = br.readLine().toCharArray();
    for(ch in str) {
        result += check_num(ch);
    }

    println(result)

} // End of main

fun check_num(num : Char) :Int {
    var result = arr[num.toInt() - 65];

    return result
} // End of check_num2

0개의 댓글