경험의 기록

문제 : www.acmicpc.net/problem/1342

 

1342번: 행운의 문자열

민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작

www.acmicpc.net

 

import java.util.*

var count = 0 // 행운의 문자열 개수
val arr = Array(26){0} // 각 알파벳이 나온 개수 저장
var sLength = 0 // 문자열 길이

fun main() = with(Scanner(System.`in`)){

    var s = nextLine() // 문자열 s
    for(i in s) arr[i-'a']++ // 알파벳 개수 카운트
    sLength = s.length

    println(find('A',0))
}

fun find(before : Char , pos : Int) : Int{
    count = 0

    if (pos == sLength) count++
    else{
        for (i in 0 until 26){
            if(arr[i] < 1 || ('a' + i) == before)
                continue

            arr[i]--
            count += find('a'+ i, pos+1)
            arr[i]++
        }
    }
    return count
}

알파벳의 개수를 저장해놓고

a로 시작하는것부터 z로 시작하는거 까지 가능한 수를 전부 탐색한다.

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading