TIL/알고리즘 공부

프로그래머스 Lv. 1 Swift 알고리즘 - 푸드 파이트 대회

여의도사노비 2022. 12. 29. 14:47
728x90

비교적 간단한 문제였다.

왼쪽과 오른쪽 값이 좌우대칭이 되게 만들면 된다.

 

 

 

이 문제를 풀면서 생각한 논리적 흐름

 
  1. 가져온 음식의 개수를 2로 나눈 값만큼 반복해서 사용하면 된다.
  2. 그 값들을 하나의 String으로 만들어서 이어준 다음
  3. String + "0" + String.reversed() 개념을 적용하면 끝.

 

 

* 코드

import Foundation

func solution(_ food:[Int]) -> String {
    var foodSetting: String = ""

    for i in 1...food.count-1 {
        let count = food[i] / 2
        if count != 0 {
            for _ in 1...count {
                foodSetting.append(String(i))
            }
        }
    }
    let reversedFoodSetting = foodSetting.reversed()

    return foodSetting + "0" + reversedFoodSetting
}

 

 

정리(Today I Learned)

  1. 처음 풀 때 해맸던 것은 문제를 바로 String으로 접근하는 것이 아닌 Array를 써서 sorted, reversed 등을 적용시켰다는 것이다. 엄청나게 비효율적인 방법이었기에 다시 String으로 접근하니 금방 풀었다.