포스트

205. 푸드 파이트 대회


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import Foundation

func solution(_ food:[Int]) -> String {
    
    var arr = food.map{$0%2 == 0 ? $0/2 : $0/2}
    var answer : String = ""
    
    var n = 0
    
    for i in arr {
        if i != 0 {
            for j in 0..<i {
                answer += String(n)
            }
        }
        n += 1
    }
    
    answer = answer + "0" + answer.reversed()

    return answer
}

요근래 swift위주로 공부하다보니 문제를 많이 못 풀었다.

반성하자…

처음에 문제를 잘못이해 했는데 알고보니 인덱스에 해당하는 숫자가 들어가는 것이었다.

그리고 문제를 보니 절반만 구하고 나머지는 그것에 역순으로 들어가는것으로 판단하여, 절반만 구하고 0을 붙이고 reversed()를 붙이면 되겠다는 생각을 하였다.

그래서 map을 통해 2로 나눴는데 정리하면서보니 애초에 삼항연산자를 쓸필요가 없었다…

2로 나눈것은 절반으로 나눠야 하기때문이다. 나머지는 버리므로 홀수도 몫만 필요했다.

그리고 반복문을 통해 n이 0이 아닐때 n을 계속 붙이도록했다 내부 반복문이 끝날때 마다 1씩 증가하게 하였다. 인덱스 때문이다.

그리고 나온값에 0을 붙이고 reversed()한것을 붙여서 리턴하였는데, 다른 풀이들을 보니 고차함수로 끝냈다. 사실 반복문 보다 repeating을 쓰면 더 좋았을텐데, 정리하다가 생각이 나버렸다.

나중에 다시 풀땐 repeating을 써봐야겠다.

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