cs/백준

[C++] 백준 2309번: 일곱 난쟁이

신_이나 2022. 7. 22. 03:25

대체 왜 틀린것이야,,

문제

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

 

코드,,

//
//  main.cpp
//  백준 2309번
//
//  Created by 신지원 on 2022/07/20.
//

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, const char * argv[]) {
    
    vector<int> v(9);
    int sum =0;
    
    for(int i=0;i<9;i++){
        cin >> v[i];
        sum += v[i];
    }
    
    for(int i =0;i<9;i++){
        for(int j=0;j<i;j++){
            if(sum - v[i] - v[j] == 100){
                v[i] = 0; v[j] = 0;
                break;
            }
        }
    }
    sort(v.begin(), v.end());
    
    for(int i =0;i<9;i++){
        if(v[i] != 0) cout << v[i] << "\n";
    }
    
    return 0;
}

 

왜 틀렸어 왜 왜왜왜왜왜 테스터 값 잘 나왔는데 왜애오왱왜애  (새벽 2시 58분 신지원)

 

//
//  main.cpp
//  백준 2309번
//
//  Created by 신지원 on 2022/07/20.
//

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, const char * argv[]) {
    
    vector<int> v(9);
    int sum = 0;
    
    for(int i=0;i<9;i++){
        cin >> v[i];
        sum += v[i];
    }
    
    for(int i =1;i<9;i++){
        for(int j=i+1;j<9;j++){
            if(sum - v[i] - v[j] == 100){
                v[i] = 0; v[j] = 0;
                break;
            }
        }
    }
    sort(v.begin(), v.end());
    
    /*for(int i =0;i<9;i++){
        if(v[i] != 0) cout << v[i] << "\n";
    }*/
    // 이렇게 굳이 할 필요 없음. 이미 0으로 만들어주고 sort 했으니까
    
    for(int i=2;i<9;i++){
        cout << v[i] << "\n";
    }
    
    return 0;
}

이것도 틀림,, 대체 왜/!??!

 

//
//  main.cpp
//  백준 2309번
//
//  Created by 신지원 on 2022/07/20.
//

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, const char * argv[]) {
    
    vector<int> v(9);
    int sum = 0;
    
    for(int i=0;i<9;i++){
        cin >> v[i];
        sum += v[i];
    }
    
    sort(v.begin(), v.end());
    
    for(int i =0;i<9;i++){
        for(int j=i+1;j<9;j++){
            if(sum - v[i] - v[j] == 100){
                for(int k=0;k<9;k++){
                    if(v[k] == v[i] || v[k] == v[j]) continue;
                    cout << v[k] << "\n";
                }
            }
        }
    }

    
    return 0;
}

틀렸당 틀렸당! 대체 왜? 자고 다시 생각해보겠다 새벽 코딩은 너무 해로워,,

 

++7/22 추가

바보바보바보바보!!!

v[k] 배열을 찾았다면 멈춰야 하는데 break 을 안넣어줘서 틀렸다. 난 과감히 for 문을 돌린 뒤 return 0; 을 넣어주어 코드를 완성했다,

//
//  main.cpp
//  백준 2309번
//
//  Created by 신지원 on 2022/07/22.
//

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, const char * argv[]) {
    
    vector<int> v(9);
    int sum = 0;
    
    for(int i=0;i<9;i++){
        cin >> v[i];
        sum += v[i];
    }
    
    sort(v.begin(), v.end());
    
    for(int i =0;i<9;i++){
        for(int j=i+1;j<9;j++){
            if(sum - v[i] - v[j] == 100){
                for(int k=0;k<9;k++){
                    if(v[k] == v[i] || v[k] == v[j]) continue;
                    cout << v[k] << "\n";
                }
                return 0;
            }
        }
    }

    
    return 0;
}

댓글로 친절하게 알려주신 익명의 댓글님 넘 감사드립니당,,,, 

앞으로 정신차리자!