SW Test/Programmers
[Programmers] Lv2. ๋ฌธ์์ด ์์ถ(kotlin)
An effort will never betray ๐
2022. 7. 28. 23:08
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ์์ 5๋ฅผ ๋ณด์ฌ์ฃผ์ง ๋ชปํ์ง๋ง, ๋ฌธ์ ์์ ํ์ธํด๋ณด๋ฉด ๋ฌธ์์ด์ ๋ฌด์กฐ๊ฑด ์ฒ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋ก ์๋ฅธ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- ๋ฌธ์์ด์ด ๊ธธ์ด๊ฐ 1์ธ ๊ฒฝ์ฐ๋ 1๋ณด๋ค ์งง์ ๋ฌธ์์ด์ ์๊ธฐ ๋๋ฌธ์ 1์ ๋ฐํํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด ๊ธธ์ด์ ์ ๋ฐ ์ด๊ณผ์ ๊ธธ์ด์ผ ๊ฒฝ์ฐ ์์ถ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ธํ ํ์๊ฐ ์์ต๋๋ค.๋ฐ๋ผ์ ๋ฌธ์์ด ๊ธธ์ด ์ ๋ฐ ์ดํ์ ๊ธธ์ด๋ก ์์ถํด์ ์ต์ํ์ ๊ธธ์ด๋ฅผ ๋ฐํํฉ๋๋ค.
- count ๋ณ์๋ ์์ ๋ฌธ์์ด์ ๊ธธ์ด์ ํด๋น ๊ธธ์ด๋ก ์์ถ ์ ํด๋น ๊ธธ์ด๋ณด๋ค ์์ ๋ถ๋ถ์ ๋ณ๋๋ก ๋ํด์ค๋๋ค. ์ฆ, 8์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ ๋ฌธ์์ด์์ 3๊ฐ์ฉ ์ชผ๊ฐ์ ์์ถํ ๊ฒฝ์ฐ ๋๋จธ์ง 2๋ ์๋์ผ๋ก ์ถ๊ฐํด์ฃผ๋ ๊ฒ์ ๋๋ค.
- str์ ๋ฌธ์์ด์ ์ ์ฅํด๋๊ณ ๋ค์ ๋ฌธ์์ด๊ณผ ๊ฐ์ผ๋ฉด cnt๋ฅผ +1 ํด์ฃผ๊ณ ๋ค๋ฅด๋ฉด cnt๊ฐ ์ฐจ์งํ๋ ๋งํผ ์ถ๊ฐ๋ก ๋ํด์ค๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์์ ์ cnt๊ฐ 10์ผ ๊ฒฝ์ฐ๋ ๋ฌธ์์ด ๊ธธ์ด๊ฐ +2, cnt๊ฐ 100์ผ ๊ฒฝ์ฐ๋ ๋ฌธ์์ด ๊ธธ์ด๊ฐ +3์ด ๋๋ค๋ ์ ์ ๋๋ค.
import kotlin.math.*
class Solution {
fun solution(s: String): Int {
var answer = 1000
if(s.length == 1) return 1
(1..s.length/2).forEach{
var count = it + (s.length % it)
var str = s.substring(0,it)
var cnt = 1
for(i in it..(s.length - it) step it){
if(str == s.substring(i, i+it)){
cnt++
}else{
str = s.substring(i, i+it)
count+=it
count+= if(cnt == 1) 0 else cnt.toString().length
cnt = 1
}
}
count+= if(cnt == 1) 0 else cnt.toString().length
answer = min(count, answer)
}
return answer
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring.html
๋ฐ์ํ