포스트

21. 코드 처리하기 (fin)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import Foundation

func solution(_ code:String) -> String {
    
    var mode : Int = 0
    var ret : String = ""
    var count : Int = 0
    var arr = code.map{String($0)}.enumerated().map{$0}
    
    var i : Int = 0

    
    count = arr.count-1
    
    while i <= count {
        if mode == 0 {
            if arr[i].element != "1" && arr[i].offset%2 == 0{
                ret += arr[i].element
            } else if arr[i].element == "1" {
                mode = 1
            } 
        } else {
            if arr[i].element != "1" && arr[i].offset%2 != 0{
                ret += arr[i].element
            } else if arr[i].element == "1" {
                mode = 0
            }
        }
        i+=1
    }
    
    if ret == "" {
        ret="EMPTY"
    }
   
    return ret
}

처음에는 이걸 어떻게 풀어야하나 멍했는데, 일단 보류를 하고 다시 하나하나 생각을 해보았다. 일단 mode가 0/1 이라는 큰 조건아래 세부조건사항이 있었다.

그리고 code의 index가 필요하여, string의 index보다 dictionary형식으로 만들어 처리하는게 나한테는 더 편해서 enumerated를 써서 offset,element 형식의 딕셔너리로 만들어 주었다.

그리고나서 큰틀로 0,1일때를 설정하고 그다음 o인상태에서 1일때 그리고 홀수 인덱스일때를 하여 문자열을 추가, 모드 변경등 내용을 넣었다.

마지막에 if 문을 추가하지않았을때 12,13케이스가 계속 실패가 떴다. 알고보니

이부분에 대한 조건을 하지 않았다. 빈문자열이라고해서 “ “ 라고 생각했는데,

”” 인 경우였다.

그래서 그냥 if문을 써서 해결했는데. isEmpty로 정리하는게 더 이쁜거같다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.