Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

프로젝트 모찌

백준코딩 [5622] - 다이얼 (Kotlin) 본문

백준코딩

백준코딩 [5622] - 다이얼 (Kotlin)

Project Mochi 2020. 7. 31. 01:22

자바만 죽어라 연습하다가 먹고 살려면 다른 언어도 좀 배워놔야 겠다 싶어서 그래도 자바랑 가장 비슷한 코틀린을 공부해보기로 했다.

 

직접해보니 정말 자바랑 매우 유사하거나 심지어는 더 간결한 코드에 놀랐던 것 같다.

 

코딩 연습에는 아직까지는 백준코딩 문제 풀기가 가장 좋다고 느껴서 한번 풀어보았다,

 

5622번 다이얼 문제는 옛날 전화기 다이얼 사용시 걸리는 시간을 계산하는 문제였다. 다이얼에 나와있는 알파벳 대문자로 외워 번호를 입력하는 방식을 사용하였을 때 번호를 다 입력할 때까지 걸리는 시간을 구하면 되는 문제.

 

숫자 1을 입력하는데 걸리는 시간은 2초이며, 숫자가 1개씩 늘어날 때마다 1초씩 더 필요로 한다.

 

문제안에 사진도 같이 제공하였는데 처음에는 사진은 안보고 숫자 1개당 문자 3개씩 할당되어 있다고만 생각하고 입력받은 Char 값을 Int로 전환해 65를 뺀뒤 3으로 나누는 방식으로 접근하여서 틀려버렸다.

 

다시 그림을 보니 다이얼 7번과 9번에는 문자가 4개씩 지정되어 있다는 걸 알아차렸다.

 

그래서 그냥 when 문을 사용해서 케이스별로 나누어 처리하기로 했다.

 

when문은 자바의 switch문과 대응하는데, switch문보다 훨씬 편리했다. 특히 각각의 케이스에 값을 여러개 넣을 수 있다는 점이 정말 눈물나도록 좋았다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.BufferedReader
import java.io.InputStreamReader
 
fun main(arg : Array<String>) {
    var usrInputStreamReader = InputStreamReader(System.`in`)
    var usrBufferedReader = BufferedReader(usrInputStreamReader)
    val usrInput = usrBufferedReader.readLine()
    var totalTime = 0 //total time initializing.
    //A: 65, Z: 90
 
    GeneralLoop@ for (i in 0 until usrInput.length) {
        var targetLetter : Int = usrInput[i].toInt()
 
        when(targetLetter) {
            65,66,67 -> totalTime += 3 //Dial: 2
            68,69,70 -> totalTime += 4 //Dial: 3
            71,72,73 -> totalTime += 5 //Dial: 4
            74,75,76 -> totalTime += 6 //Dial: 5
            77,78,79 -> totalTime += 7 //Dial: 6
            80,81,82,83 -> totalTime += 8 //Dial: 7
            84,85,86 -> totalTime += 9 //Dial: 8
            87,88,89,90 -> totalTime += 10 //Dial: 9
            else -> continue@GeneralLoop
        }
    }
    println(totalTime)
}
cs

 

 

 

 

Comments