본문 바로가기

Algorithm/Programers - C++

[프로그래머스] 푸드 파이트 대회 - reverse()

 

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

 

[C++] reverse 문자열을 거꾸로 하는 함수에 대해서

안녕하세요. BlockDMask 입니다. 오늘은 C++ string 문자열을 거꾸로 돌려버리는 std::reverse 함수에 대해서 알아보도록 하겠습니다.C++ string 관련해서 다른 함수들이 궁금하다면 C++ 문자열 총정리 [바로

blockdmask.tistory.com