728x90
https://school.programmers.co.kr/learn/courses/30/lessons/76502
문제 접근
- 문자열을 회전시켜가며 괄호가 올바르게 되어있는지를 확인하는 문제
- 괄호가 올바르게 되어있는지를 확인하는 함수를 따로 만들어서 처리하였다.
- 다만 반례가 응근 많이나와서 반례가 안나올때까지 조건을 하나하나 추가해주었다....
정답코드
class Solution {
var list = mutableListOf<Char>()
fun solution(s: String): Int {
var answer: Int = 0
var s2 = s //회전시킬 문자열
var sNum = s2.length // 회전시킬 횟수
while(sNum-- > 0){
var temp = ""
//조건에 맞는지 확인
if(check(s2)){
answer++
}
//문자열 회전시키기
for(i in 1 until s.length){
temp += s2[i].toString()
}
temp += s2[0].toString()
s2 = temp
}
return answer
}
//올바른 문자열인지 판단해주는 함수
fun check(s:String) : Boolean{
//마지막이 여는 괄호일경우 올바를 수 없음
if(s[s.length-1] == '(' || s[s.length-1] == '{' || s[s.length-1] == '[')
{
return false
}
//괄호의 길이가 홀수일 경우 올바를 수 없음
if(s.length %2 != 0){
return false
}
for(i in 0 until s.length){
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
{
list.add(s[i])
}
else if(s[i] == ')'){
if(list.contains('(')&& list.last() == '('){
list.removeLast()
}
else{
return false
}
}
else if(s[i] == ']'){
if(list.contains('[')&& list.last() == '['){
list.removeLast()
}
else{
return false
}
}
else if(s[i] == '}'){
if(list.contains('{')&& list.last() == '{'){
list.removeLast()
}
else{
return false
}
}
}
return true
}
}
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
프로그래머스 최솟값 만들기(lv2, Python) (0) | 2023.02.24 |
---|---|
프로그래머스 올바른 괄호(lv2, Python) (0) | 2023.02.24 |
프로그래머스 - 소수찾기 (Python) (0) | 2023.02.21 |
프로그래머스 최소 직사각형(lv1, python) (0) | 2023.02.21 |
프로그래머스 lv2 - 타겟넘버(Kotlin) (0) | 2023.02.03 |