1 ≤ code의 길이 ≤ 100,000
code는 알파벳 소문자 또는 "1"로 이루어진 문자열입니다.
입출력 예
code result
"abc1abc1abc" "acbac"
입출력 예 설명
입출력 예 #1
code의 각 인덱스 i에 따라 다음과 같이 mode와 ret가 변합니다.
i code[i] mode ret
0 "a" 0 "a"
1 "b" 0 "a"
2 "c" 0 "ac"
3 "1" 1 "ac"
4 "a" 1 "ac"
5 "b" 1 "acb"
6 "c" 1 "acb"
7 "1" 0 "acb"
8 "a" 0 "acba"
9 "b" 0 "acba"
10 "c" 0 "acbac"
따라서 "acbac"를 return 합니다.
package main
import (
"fmt"
)
// 코드 처리하기
// mode는 0과 1이 있다.
// idx를 0부터 code-1길이까지 1씩 순회하면서 동작한다.
func solution(code string) string {
mode := 0
ret := ""
for idx, _ := range code {
//fmt.Println("v", string(v))
if mode == 0 {
//fmt.Println(string(code[idx]))
if string(code[idx]) != "1" {
if idx%2 == 0 {
ret += string(code[idx])
}
} else if string(code[idx]) == "1" {
mode = 1
}
} else if mode == 1 {
//fmt.Println(string(code[idx]))
if string(code[idx]) != "1" {
if idx%2 != 0 {
ret += string(code[idx])
}
} else if string(code[idx]) == "1" {
mode = 0
}
}
}
//fmt.Println("ret", ret)
if len(ret) == 0 {
return "EMPTY"
}
return ret
}
func main() {
code := "abc1abc1abc"
//result := "acbac"
solution(code)
}
Golang Algorithm - 순서쌍의 개수 (프로그래머스) (0) | 2023.07.09 |
---|---|
Golang Algorithm - 문자열 밀기 (프로그래머스) (0) | 2023.06.23 |
Golang Algorithm - 문자열 나누기 (0) | 2023.05.14 |
Golang Algorithm - 정수를 나선형으로 배치하기 (0) | 2023.05.12 |
Golang Algorithm - 정수를 나선형으로 배치하기 (0) | 2023.05.12 |