본문 바로가기
스터디(beakjoon)

Kotlin] 백준 10809번 문제풀이

by 김마리님 2023. 5. 30.

https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 

 

풀이

더보기

알파벳 갯수만큼 반복문을 돌리면 되는데, 알파벳을 문자로 하나씩 올리기엔 너무 많으니 아스키코드를 사용한다.

i를 a의 아스키코드로 시작하고, 소문자만큼 반복문의 양을 정해놓은 후, i를 아스키코드로 변환하여 indexOf를 이용하여 어디서 첫 번째로 등장하는지 확인한다. 해당 인덱스를 리스트에 넣고, 리스트를 문자열로 변경하면 된다.

 

import java.io.BufferedWriter
import java.io.OutputStreamWriter

fun main(args: Array<String>) {
    question10809()
}

fun question10809() {
    var writer = BufferedWriter(OutputStreamWriter(System.out))

    var word = readLine()
    var list = mutableListOf<Int>()

    // 아스키코드
    for(i in 97 .. 122) {
        word?.indexOf(i.toChar())?.let { list.add(it) }
    }

    writer.write(list.joinToString(" "))
    writer.flush()

}
반응형