알고리즘/프로그래머스

[프로그래머스/c++/swift] 푸드 파이트 대회

녕이 2022. 11. 25. 12:16
728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/134240

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

c++

#include <string>
#include <vector>

using namespace std;

string solution(vector<int> food) {
    string front = "";
    string back = "";
    for(int i=1; i<food.size(); i++){
        int n = food[i]/2;
        while(n--){
            front += to_string(i);
            back = to_string(i) + back;
        }
    }
    return front + "0" + back;
}

여기서 back은 reverse로 할 수 도 있다

 

swift

import Foundation

func solution(_ food:[Int]) -> String {
    var front = ""
    var back = ""
    for i in 1..<food.count {
        var n = food[i]/2
        while n != 0 {
            front += String(i)
            back = String(i) + back
            n -= 1
        }
    }
    return front + "0" + back
}

 

c++를 먼저 풀어보고,, swift로도 생각해보는 거라 다른 사람의 코드를 보는 게 도움이 될 것이라고 생각한다.

import Foundation

func solution(_ food:[Int]) -> String {
    var result = ""
    for i in food.indices {
        result += String(repeating: String(i), count: food[i] / 2)
    }
    return result + "0" + result.reversed()
}

i를 food[i]/2번 반복했다. 나와 같은 생각을 했는데, 구현하는 방식이 이쪽이 좀 더 세련된 것 같다. 오호~~

 

 

728x90