https://programmers.co.kr/learn/courses/30/lessons/86051?language=c
코딩테스트 연습 - 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
programmers.co.kr
첫 번째 시도
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// size_t: unsigned int
int solution(int numbers[], size_t numbers_len) {
int answer = 0;
int idx = 0;
int count[10] = {-1};
for (int i = 0; i < numbers_len; i++) {
idx = numbers[i];
count[idx] = 1;
}
for (int i = 0; i < 10; i++) {
if (count[i] != 1) {
answer += i;
}
}
return answer;
}
void main() {
int input[] = {1, 2, 3, 4, 6, 7, 8, 0};
int input2[] = { 5,8,4,0,6,7,9 };
int answer = solution(input, 8);
int answer2 = solution(input2, 7);
printf("%d, %d",answer, answer2);
}
visual studio에 옮겨 풀어서 main함수도 있다.
단순하게 모든 숫자를 옮기고, 하나하나 다시 카운트해서 더했다. 정답이긴 했지만 뭔가 아쉽..!
두 번째 시도
int solution(int numbers[], size_t numbers_len) {
int answer = 45;
int idx = 0;
for (int i = 0; i < numbers_len; i++) {
answer -= numbers[i];
}
return answer;
}
void main() {
int input[] = {1, 2, 3, 4, 6, 7, 8, 0};
int input2[] = { 5,8,4,0,6,7,9 };
int answer = solution(input, 8);
int answer2 = solution(input2, 7);
printf("%d, %d",answer, answer2);
}
하나하나 더하는게 아니라 반대로 생각해서, 0~9까지 더한 값 45에서 numbers 값들을 빼주었다.
훨 간단해졌음!
배열 초기화
//1. 배열 선언, 초기화 동시에 진행. 크기는 3으로 자동 정해짐
int array[] = {1,2,3}
//2. 역시 선언, 초기화 동시 진행. 크기가 10이고, 첫 번째 원소만 -1이고 나머지는 0인 배열
int array[10] = {-1}
//3. 아래처럼 따로는 안됨
int array[7];
array = { 5,8,4,0,6,7,9 }; //ERROR!!
//4. 따로 하려면 원소 하나씩 초기화 해주어야 한다
int array[3];
array[0]=1;
array[1]=2;
array[2]=3;
'코딩놀이: python C C++' 카테고리의 다른 글
[C] 배열과 pointer 포인터 (0) | 2022.06.24 |
---|---|
[C] 문자열 strlen, ASCII코드 출력 (0) | 2022.06.23 |
[python, 프로그래머스] lv3: 추석 트래픽 (datetime) (0) | 2022.06.15 |
프로그래머스, 백준 팁 정리 (0) | 2022.06.14 |
프로그래머스 lv2: 오픈채팅방(dictionary, in) (0) | 2022.06.14 |