https://programmers.co.kr/learn/courses/30/lessons/86051?language=c
코딩테스트 연습 - 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한
programmers.co.kr
0부터 9까지 배열에 없는 수를 더하는 문제. false 10개로 이루어진 배열을 만들고 있는 숫자를 true로 바꾼후에 false인 수를 더한다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
int answer = 0;
bool num[10] = {false,}; // 0 ~ 9
for (int i = 0; i < numbers_len; i++)
num[numbers[i]] = true;
for (int i = 0; i < 10; i++)
if (!num[i]) answer += i;
return answer;
}
------------------------------------------------------ 21.11.21 ------------------------------------------------------
우연히 프로그래머스 문제를 둘러보다가 이 문제를 다시 보았는데, 생각해보니 이렇게까지 복잡하게 할 필요가 없었다. 아무래도 "없는 것"이라는 키워드에 너무 생각이 쏠렸나보다.
문제에서 0~9까지의 수가 중복없이 랜덤으로 들어가있으므로, 그냥 0~9까지의 합인 45에서 주어진 숫자의 총합을 빼면 되는 일이었다.
// C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
int answer = 45;
for (int i = 0; i < numbers_len; i++)
answer -= numbers[i];
return answer;
}
// C++
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int solution(vector<int> numbers) {
return 45-accumulate(numbers.begin(), numbers.end(), 0);
}
'coding_test > programmers' 카테고리의 다른 글
lv1 / 2016년 / C++ (0) | 2021.12.20 |
---|---|
lv1 / K번째 수 / C++ (0) | 2021.12.20 |
lv1 / 수박수박수박수박수박수? / C (0) | 2021.10.12 |
lv1 / 내적 / C (0) | 2021.09.17 |
lv1 / 3진수 뒤집기 / C++ (0) | 2021.09.12 |