본문 바로가기
개발/백준 & 프로그래머스

[백준]2309번 일곱 난쟁이 c/c++

by 성장하고픈개발자 2022. 6. 25.
728x90
728x90

문제

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

이 문제는 다른분의 코드를 참고하여 작성했다.

막혔던 부분

  • 9명 난쟁이의 키를 모두 더하고 이중for문을 돌려 100에서 뺀값이 9명중 2명의 합과 같으면 그 원소들을 제외해야한다는 사실은 알았다.
  • 하지만 다른 for문으로 구한 원소를 삭제하는 방법을 생각을 못했다.

    간단하게 또 하나의 for문을 만들어서 i나 j가 새로운 for문의 값과 같으면 continue, 아니면 원소를 출력하는 방식으로 구현하면 되는 문제였다.

코드

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int a[9];
    int sum = 0;
    for (int i = 0; i < 9; i++) {
        cin >> a[i];
        sum += a[i];
    }

    sort(a, a + 9);
    for (int i = 0; i < 9; i++) {
        for (int j = i+1; j < 9; j++) {
            if ((sum - (a[i] + a[j])) == 100) {
                for (int k = 0; k < 9; k++) {
                    if (i == k || j == k)
                        continue;
                    else
                        cout << a[k] << endl;
                }
                 return 0;
            }
        }
    }

}

피드백

return 0; 부분을 맨 마지막에 넣으면 실패로 뜨고 다른분의 코드를 참고한 위치에 넣으면 성공으로 뜬다. 그 이유는 정확히 모르겠다.. 물어봐서 나중에 꼭 해결하자

728x90
728x90