

1. 의도 및 이유
2. 코드 동작 로직
3. 버그 또는 에러 및 해결
|
해당 문제를 맨처음 for문을 이용해서
변수 val str = StringBuilder()
// 왼쪽으로 한 칸씩 이동시키기
for (i in 1 until str.length) {
str.setCharAt(i - 1, str[i])
}
이런식으로 문제를 풀다가 올바른 변수인지 어떻게 판단하는지에대해 고민을 많이하다가 검색을 해서 문제를 해결했다.
해당 문제는 대부분 자료구조라는 개념을 이용해서 해결한 사람들이 많았다.
[자료구조 개론] 1. 자료구조와 알고리즘 - ①
[자료구조 개론 단원 구성] 1. 알고리즘 - 순환 (Recursion, 재귀) - 정렬 (Sorting) - 검색 (Search, 탐색) 2. 자료구조 - 선형 자료구조 ① 리스트 (List) ② 스택 (Stack) ③ 큐 (Queue) - 비선형 자료구조 ① 트리
roi-data.com
코드는 아래와 같이 작성하였다.


문자열을 왼쪽으로 x칸 회전시키면서 올바른 괄호 문자열인지 확인한다.
s.substring(i) :i에서부터 끝까지 자른 문자열의 오른쪽에 s.substring(0,i) 처음부터 i번째 전까지의 문자열을 붙인다.
계속 반복하면서 붙여나가고 변수 rotatedString에 문자열을 저장한다.
그 후 isValid 함수에 집어넣고 유효성을 판단한다.
isValid 함수의 when 구문 내부에서 각 괄호에 대한 처리를 했는데,각각의 경우에서 스택에 열린 괄호를 추가하거나, 닫힌 괄호를 확인하여
올바른 쌍인 경우에 스택에서 제거하는 작업을 했다. 그리고 만약 닫힌 괄호가 나왔는데 이에 대응되는 열린 괄호가 스택에 없거나, 열린 괄호에 대응되는 닫힌 괄호가 나오지 않는 경우에는 return false가 호출되어 올바른 괄호 문자열이 아니라는 신호를 보낸다.
- keep: 매일매일 til을 쓸것
- problem:알고리즘 개념이 많이부족함
- try:지속적으로 개념공부하기
'TIL > kotlin 알고리즘' 카테고리의 다른 글
| kotlin 프로그래머스 lv2 H-Index (0) | 2024.03.07 |
|---|---|
| kotlin 프로그래머스 lv2 연속 부분 수열 합의 개수 (0) | 2024.03.07 |
| kotlin 프로그래머스 lv2 귤 고르기 (0) | 2024.03.05 |
| kotlin 프로그래머스 lv2 멀리 뛰기 (0) | 2024.03.05 |
| kotlin 프로그래머스 lv1 N개의 최소공배수 (0) | 2024.02.29 |