푸드 파이트 대회[Swift]

김형준·2023년 6월 7일
0

코딩문제

목록 보기
5/9

문제해결을 위한 공부내용

-String(repeating: , count: )
-for 반복문
-인덱스 위치

func solution(_ food:[Int]) -> String {
    
    var result: [String] = ["0"] // 중심점인 0을 세운다
    
    for i in 1...food.count-1 {
        
        if food[i] % 2 == 0  {
            
            result.insert(String(repeating: String(i), count: food[i] / 2), at: result.index(i, offsetBy: -1))
            result.insert(String(repeating: String(i), count: food[i] / 2), at: result.index(i, offsetBy: +1))
           
           
           %2로 나눠진다면 그 수를 반복해서 넣는다
           여기서 핵심은 위치설정이다⭐️
            at: result.index(i, offsetBy: -1)
            at: result.index(i, offsetBy: +1)
            0을 기준으로 앞뒤로 넣어주는 방법이다
            사실 아직 index를 정확히 이해하지 못했지만 감으로 맞은 기분..
            
            
        } else {  위의 조건문이 false이면 -1해주고 위와 동일하다
            
            result.insert(String(repeating: String(i), count: (food[i]-1) / 2), at: result.index(i, offsetBy: -1))
            result.insert(String(repeating: String(i), count: (food[i]-1) / 2), at: result.index(i, offsetBy: +1))
        }
        
    }
   
    
    return  result.joined()
}

결국 핵심은 어떻게 0을 기준으로 앞뒤로 반복해서 넣어주는게 핵심이다.
다른 사람들의 코드를 보니 간단하게 reverse를 활용하여 바꿔주었다
왜 나는 쉬운방법을 돌아가는지 ....ㅠ
화이팅합시다요~!

func solution1(_ food:[Int]) -> String {
    
    var result = ""
    
    for i in food.indices {
 
        result += String(repeating: String(i), count: food[i] / 2)
        
    // 0 또는 1일 경우 count가 안되기 때문에 건너뜀 대박....⭐️
   
    }
    return result + "0" + result.reversed()
}
profile
기억보단 기록, 느리더라도 꾸준히

0개의 댓글