강의로 돌아가기
이산하

아래있는걸로 1~6 케이스 안되시는분 보세요

[0,0,0,1000]
[0,0,1000,0]
[1000,0,0,0]

이렇게 한번 비교 해보세요
드디어 찾았네요 ㅠ

3자리수만 비교하고 1000은 좀 따로 해놨더니 1000에서 안되는 거더라구요
[0,0,70] 은 잘되는데 저게 안되고
저거 해결후 1~6번 다 해결 되었네요

1~6은 0과 관련된 문제인거 같습니다.

작성중인 코드―solution.cpp
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
#include <iostream>

using namespace std;
bool compare(pair <int,int> a, pair <int,int> b){

    if(a.first == 1000){
        if(b.first ==0)
            return true;
         return false;
    }
    if(b.first == 1000){
        if(a.first ==0)
            return false;
        return true;
    }
    if(a.first > b.first)
        return true;
    if(a.first==b.first){
        if(a.first/100 < (a.first/10)%10){
            if(a.second <= b.second){
                return true;
            }
        }
        else if(a.second >= b.second){
                return true;
            }
    }
    return false;
}

int comeBack(pair <int,int> h){
    switch(h.second){
        case 3:
            return h.first;
        case 2:
            return h.first/10;
        case 1:
            return h.first/100;
    }
}
string solution(vector<int> numbers) {
    string answer = "";
    string temp1 = "";
    string temp2 ="";
    vector<pair <int,int>> h;
    int temp = 0; 
    int count = 0;
    for(int i =0 ; i < numbers.size(); i++){
        if(numbers[i] < 10){
            temp= numbers[i]*100 + numbers[i]*10 + numbers[i];
            h.push_back(make_pair(temp,1));
        }
        if((numbers[i]>=10) && (numbers[i] < 100)){
            temp=  numbers[i]*10 + numbers[i]/10;
             h.push_back(make_pair(temp,2));
        }     
        if((numbers[i]>=100) && (numbers[i] <= 1000)){
            temp= numbers[i];
             h.push_back(make_pair(temp,3));
        }   
    }
    sort(h.begin(),h.end(),compare);
    for(int i =0 ; i < h.size(); i++){
        if((answer.compare("0") ==0) && comeBack(h[i])==0)
            answer ="0";
        else 
            answer += to_string(comeBack(h[i]));
    }
    return answer;
}
1 개의 답변
Demi

안녕하세요. 좋은 정보 감사합니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.