카테고리 없음

[2024.05.17.] 융보공 8주차문제 풀이 (워게임 - 산타 할아버지도 힘들어요 , 코딩테스트)💗

z3r0_ 2024. 5. 24. 13:42

 

오늘 풀어볼 것은 산타 할아버지도 힘들어요!

사실 이거 전에 Read my car 이라는 문제를 풀고 있었는데... MAC OS에서 지원하지 않는 무언가가 있는 관계로 그냥 다른 문제를 풀기로 함

 


'산타 할아버지도 힘들어요' 문제 풀이

어린 아이 : 산타할아버지! 선물을 할아버지가 모두 직접 보내주시나요??
산타 할아버지 : 물론이죠! 근데, 할아버지가 모든걸 직접 보내진 않아요~ 호호
어린 아이 : 그럼 누가 보내요?
산타 할아버지 : 우리 루돌프 중에 우주에 있는 NOAA 15 라는 친구가 있어요~
어린 아이 : 이름이 왜 NOAA 15 에요?
산타 할아버지 : 크면 다 알아요~ 호호호~ 메리 크리스마스!

우주에서 보내는 산타 할아버지의 선물을 받아봅시다! 호호

 

NOAA 15가 선물을 보낸다!

 

 

 

문제 풀이 파일을 보면 이렇게 음성 파일이 두 개 있는데

소리가... 진심 소름 돋음

 

새벽에 혼자 풀다가 약간 울 뻔...

 

그래서 이건 음성 파일이 아니고 약간 모스 부호 같은 느낌이다~ 라고 생각했어요

 

 

그래서 모스 부호를 해석해 주는 사이트에 들어가서 일단 업로드를 해 보았다.

그런데 파일 변환이 안 된다...! 그래서 여러 사이트로 시도를 해 보았는데

맥북이라 안 읽히는 듯 하여 다음에 다시 해 보기로...

 


코딩 테스트

 

창고 정리를 리스트를 사용하여 하는 것 같습니다!

 

#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;
}

 

주어진 코드는 이것이고, 이를 한 줄만 고쳐서 디버깅 해야 함!

 

정답은 clean_storage에 저장된 값을 제대로 바꾸어 주어야 함

 

#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] = storage[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;
}

 

정답!