본문 바로가기
  • 피곤한 일상에 초록물약 한잔
코딩테스트

일곱난쟁이

by 0r4c13 2021. 3. 3.
반응형
#include <stdio.h>
#include <random>
#include <algorithm>

int main(){
    int boys[9], sum = 0, temp, x, y;
    for(int i = 0; i < 9; i++){
        scanf("%d", &boys[i]);
        sum += boys[i];
    }
    temp = sum - 100;
    for(int i = 0; i < 9; i++){
        for(int j = 0; j < 9; j++){
            if(boys[i] + boys[j] == temp && i != j){
                x = boys[i];
                y = boys[j];
            }
        }
    }
    std::sort(boys, boys + 9);
    for(int i = 0; i < 9; i++){
        if(boys[i] != x && boys[i] != y){
            printf("%d\n", boys[i]);
        }
    }
    return 0;
}

100이하의 자연수 9개를 받아, 그 중 합이 100이 되는 7개를 찾아, 오름차순으로 결과를 내는 소스.

오답은 없는것이 조건인 문제.

 

합이 100이 되는 값을 찾는것을 생각을 반대로 돌렸다.

100을 초과하는 숫자를 계산하여, 반복문을 돌려 두 개의 숫자의 합이 계산된 값과 동일한 2개를 뽑는다.

오름차순으로 정리 후에 반복하여 돌리고, 그 2개의 값과 같지 않은 수만 출력하는 방식을 사용했다.

 

처음에 오답이 나오길래 왜그런가 했더니, temp값을 뽑아낼때 sum % 100을 하였기에, 스파이 난쟁이 두명의 합이 100이 넘어가 오답이었던 것.

 

 

 

 

문제출처 : www.acmicpc.net/problem/2309

반응형

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 모의고사 문제  (0) 2021.03.12
[프로그래머스] 완주하지 못한 선수 문제  (0) 2021.03.12
K번째 수  (0) 2021.03.07
N번째 큰 수  (0) 2021.03.03
소수구하기  (0) 2021.03.03

댓글