https://programmers.co.kr/learn/courses/30/lessons/86051?language=c
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 |