쌓고 쌓다
[프로그래머스] 푸드 파이트 대회 C++ 풀이 및 해설 본문
https://school.programmers.co.kr/learn/courses/30/lessons/134240?language=cpp
풀이 방법
- 먼저 생수를 가운데 무조건 배치를 하므로 answer에 "0"을 추가해준다.
- 이제 현재 answer의 앞뒤로 음식들을 배치할 것이다.
- 목표하는 정답의 안쪽부터 음식을 채워 나갈 것이므로 음식 배열을 도는 반복문은 배열 끝부터 돈다.
- 이때 음식이 /2로 나눠지는만큼 answer의 앞뒤에 음식의 인덱스 i를 붙인다. (왜냐 양쪽 선수 앞뒤로 서로 하나씩 먹을려면 2개가 필요한데. 이 2개의 쌍이 몇개나 나올지를 /2로 계산하여 그 크기만큼 음식 인덱스를 answer에 붙이는것이다.)
전체 코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(vector<int> food) {
string answer = "";
answer+="0";
for(int i=food.size()-1; i>=1; i--) {
for(int j=0; j<food[i]/2; j++) { // 앞뒤로 2개의 음식을 붙일 수 있는만큼 붙임
answer.insert(0, to_string(i));
answer.insert(answer.length(), to_string(i));
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 미로 탈출 C++ 풀이 및 해설 (0) | 2023.10.29 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 C++ 풀이 및 해설 (0) | 2023.10.28 |
[프로그래머스] 가장 가까운 같은 글자 C++ 풀이 및 해설 (1) | 2023.10.06 |
[프로그래머스] 삼총사 C++ 풀이 및 해설 (0) | 2023.10.02 |
[프로그래머스] 크기가 작은 부분 문자열 C++ 풀이 및 해설 (0) | 2023.09.23 |
Comments