Level. 1
문제
풀이
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
string solution(vector<int> food) {
string answer = "";
string str1 = "";
string str2;
for(int i=1; i<food.size(); i++){
for(int j=0; j<food[i]/2; j++){
str1 += to_string(i);
}
}
str2 = str1;
sort(str2.begin(), str2.end(), greater<>());
answer += str1 + "0" + str2;
return answer;
}
해결과정
1. 왼쪽 사람의 음식 배치를 구한다
2. 왼쪽 사람의 배치를 역순으로 정렬하여 [ 왼쪽사람배치 + "0" + 오른쪽사람배치 ] 문자열을 생성한다.
역순으로 정렬할 때 표준라이브러리 내에 있는 greater() 비교 함수를 sort의 마지막 파라미터로 전달하여, 역순정렬하였다.
다른 사람 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<int> food) {
string answer = "";
for(int i=1;i<food.size();i++){
int iter=food[i]/2;
for(int j=1;j<=iter;j++){
answer.append(to_string(i));
}
}
string tmp=answer;
reverse(tmp.begin(),tmp.end());
answer.append("0");
answer.append(tmp);
return answer;
}
reverse
reverse(시작반복자, 종료반복자)
- algorithm 라이브러리에 포함되어 있다.
- 의미 그대로 거꾸로 뒤집는 동작을 한다.
- string(문자열), vector(벡터), list(리스트)에 사용 가능하다.
https://blockdmask.tistory.com/363
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (0) | 2023.06.25 |
---|---|
[프로그래머스] 문자열 나누기 (0) | 2023.06.10 |
[프로그래머스] 숫자짝꿍 - map (0) | 2023.04.15 |
[프로그래머스] 점프와 순간 이동 - 비트연산 (0) | 2023.03.21 |
[프로그래머스] JadenCase 문자열 만들기 / isspace (0) | 2023.03.12 |