일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래밍
- C
- 티스토리챌린지
- 개발
- 애니메이팅
- visualstudio
- modeling
- charactercreator
- character
- ue5
- cc4
- 개발블로그
- 마야
- unreal
- animating
- ANIMATION
- 3dmodeling
- c++
- iclone
- autodesk
- 3d
- reallusion
- HTML
- JavaScript
- UnrealEngine
- C언어
- 오블완
- js
- Costume
- 언리얼엔진
- Today
- Total
개발나라 스용공주
[프로그래머스] PCCE 기출문제 - 8번 / 창고 정리 본문
[문제]
선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다.
예를 들어 창고의 각 칸에 담겨있는 물건의 이름이storage = ["pencil", "pencil", "pencil", "book"], 각 물건의 개수가 num = [2, 4, 3, 1]이라면 연필과 책을 한 칸에 각각 겹쳐 쌓아 간단하게 clean_storage = ["pencil", "book"], clean_num = [9, 1]로 만들 수 있습니다.
주어진 solution 함수는 정리되기 전 창고의 물건 이름이 담긴 문자열 리스트 storage와 각 물건의 개수가 담긴 정수 리스트 num이 주어질 때, 정리된 창고에서 개수가 가장 많은 물건의 이름을 return 하는 함수입니다. solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> storage, vector<int> num) {
int num_item = 0;
vector<string> clean_storage(storage.size());
vector<int> clean_num(num.size());
for(int i=0; i<storage.size(); i++){
int clean_idx = -1;
for(int j=0; j<num_item; j++){
if(storage[i] == clean_storage[j]){
clean_idx = j;
break;
}
}
if(clean_idx == -1){
clean_storage[num_item] = to_string(num[i]);
clean_num[num_item] = num[i];
num_item += 1;
}
else{
clean_num[clean_idx] += num[i];
}
}
// 아래 코드에는 틀린 부분이 없습니다.
int num_max = -1;
string answer = "";
for(int i=0; i<num_item; i++){
if(clean_num[i] > num_max){
num_max = clean_num[i];
answer = clean_storage[i];
}
}
return answer;
}
* 해당 문제의 핵심 개념 : to_string()
clean_storage[num_item] = to_string(num[i]);
=> to_string()은 아래 코드와 같이 해당 문자열형이 아닌 다른 자료형을 가진 변수의 값을 문자열로 반환해주는 역할을 해준다. 그 예시는 아래 코드와 같다.
따라서, 위의 코드처럼 사용될 경우 새로 정리된 물건의 이름이 들어가야 하는 clean_storage에 정리 전 물건의 int형의 숫자를 문자로 반환하여 넣어주는 의미이므로 해당 부분이 틀린 것이다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int Change = 10;
string Num = to_string(Change);
cout << "Change : " + Num << endl;
}
'C++ > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.0 C++ 홀짝에 따라 다른 값 반환하기 / for문 2씩 증가하는 방법 (1) | 2024.03.22 |
---|---|
[프로그래머스] Lv.0 C++ 문자열 곱하기 (0) | 2024.03.21 |
[프로그래머스] #008 Lv.0 C++ 문자열 섞기 (0) | 2023.10.07 |
[프로그래머스] #007 Lv.0 C++ 홀짝 구분하기 (0) | 2023.09.30 |
[프로그래머스] #006 Lv.0 C++ 문자열 돌리기 (0) | 2023.09.30 |