728x90
[Swift] 프로그래머스 문자열 나누기(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/140108
2. 접근
두 가지를 세주면 된다. 특정 글자가 나오는 횟수, 특정 글자가 아닌 것이 나오는 횟수.
그리고 문자열을 분리할 때마다, 그 횟수를 다시 세는 것이 필요하다.
아래 코드에서 반복문의 첫 번째 if문은 s의 끝까지 모두 반복이 끝났을 경우, 남아있던 배열을 답변 배열에 넣어주는 역할을 한다.
두 번째 if문은 count1, count2가 0일 경우, 즉 특정 x를 정하는 경우라고 할 수 있다.
tempFirst를 i번째 Character로 정하고, count1은 특정 x를 세는 counter라고 정의한다.
count2는 당연히 x가 아닌 글자를 센 counter라고 할 수 있는 것이다.
그 다음부터는 s를 차례로 읽어가면서 count1 또는 count2에 숫자를 더해간다. 만약 count1과 2가 같아진다면, 바로 tempArray에 있는 글자를 answer에 집어넣고 초기화시켜준다.
로직을 잘 분리하고, 구현하는 것에 초점을 맞추어 하나씩 구현하면 되는 '구현' 문제 였다.
3. 코드
import Foundation
func solution(_ s:String) -> Int {
var answer = [String]()
var count1 = 0
var count2 = 0
var innerS = Array(s)
var tempFirst: Character = " "
var tempArray = [Character]()
for i in 0 ... innerS.count - 1 {
if i == innerS.count - 1 {
tempArray.append(innerS[i])
answer.append(String(tempArray))
break
}
if count1 == 0 && count2 == 0 {
tempFirst = innerS[i]
count1 += 1
tempArray.append(innerS[i])
continue
}
if innerS[i] != tempFirst {
count2 += 1
tempArray.append(innerS[i])
} else {
count1 += 1
tempArray.append(innerS[i])
}
if count1 == count2 {
answer.append(String(tempArray))
count1 = 0
count2 = 0
tempArray = [Character]()
}
}
return answer.count
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 신고 결과 받기(lv. 1) (0) | 2023.02.23 |
---|---|
[Swift] 프로그래머스 성격 유형 검사하기(lv. 1) (0) | 2023.02.21 |
[Swift] 프로그래머스 과일 장수(lv. 1) (0) | 2023.02.18 |
[Swift] 프로그래머스 옹알이 (2)(lv. 1) (0) | 2023.02.17 |
[Swift] 프로그래머스 신규 아이디 추천(lv. 1) (0) | 2023.02.16 |
댓글