반응형
백준 5555번 문제입니다. (solved.ac) 기준 실버 5 문제입니다.
https://www.acmicpc.net/problem/5555
문제
문제 접근
찾고자 하는 문자열이 반지에 포함되어있는지 확인하고 찾는 문자열을 포함하는 반지의 개수를 구하는 문제입니다.
반지는 문자열의 시작과 끝이 연결된 형태로 이루어져있다고 하였는데 문자열의 길이가 10으로 짧기때문에 10가지 모든 경우를 일일이 확인했습니다.(AAAAAAAAAX라면 AAAAAAAAXA, AAAAAAAXAA ... XAAAAAAAAAA 까지 탐색)
정답 코드
/**
*
* 시간 제한 1초 == 약 10억회의 연산 가능
*
* 요구사항
* - N개의 반지를 가짐.
* - 각 반지는 대문자 10문자로 이루어진 문자열이 새겨져있음.
* - 문자열은 시작과 끝이 연결되어있음.
*
* - 찾고자하는 문자열이 주어지면 그 문자열을 포함하는 반지가 몇 개인지를 발견하는지 찾기.
*
* 아이디어
* - 반지의 문자열이 가능한 모든 경우를 찾아서 판별?
* - ex) ZAAAAXY 라면 AAAAXYZ, AAAXYZA ... 등
* 1. 찾을 수 있는 모든 반지 문자열의 경우의 수 찾기
* 2. 반지의 모든 경우의 수에 원하는 문자열을 확인해보기
*
*/
fun main() {
val wannaFind = readln()
val ringCnt = readln().toInt()
var ans = 0
repeat(ringCnt) {
val ring = readln()
val cases = numberOfCases(ring)
cases.forEach { ringString ->
if (ringString.contains(wannaFind)) {
ans++
return@repeat
}
}
}
println(ans)
}
fun numberOfCases(string: String): MutableList<String> {
val casesList = mutableListOf<String>()
for (startIndex in 1..string.length) {
val case = string.substring(startIndex, string.length) + string.substring(0, startIndex)
casesList.add(case)
}
return casesList
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 5430번 AC[Kotlin - 코틀린] (0) | 2022.09.14 |
---|---|
[백준] 1895번 필터(브루트 포스 - 완전 탐색)[Kotlin - 코틀린] (2) | 2022.09.13 |
[백준] 2897번 몬스터 트럭(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.09.13 |
[백준] 2941번 크로아티아 알파벳[Kotlin - 코틀린] (0) | 2022.07.13 |
[백준] 14225번 부분수열의 합(브루트포스 - DFS)[Kotlin - 코틀린] (0) | 2022.07.07 |
최근댓글