코딩테스트
[프로그래머스] 없는 숫자 더하기
코딩너구리
2024. 2. 29. 14:49
https://school.programmers.co.kr/learn/courses/30/lessons/86051
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
배열을 탐색하고 검사를 통해 없는 값을 가져와야 하는 문제다. 0~9 의 숫자를 탐색하고, 배열도 탐색해야 하니 아무래도 다중 for문을 사용해야 겠다고 생각이 들었다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> numbers) {
int answer = 0;
for(int i=0; i<=9;i++)
{
for(int j=0; j<numbers.size();j++)
{
if(i==numbers[j])
{
break;
}
if(j == numbers.size()-1)
{
answer+=i;
}
}
}
return answer;
}
0~9의 숫자를 i, 탐색될 배열의 값을 j로 했을때 for문을 이용해 값을 구한다. 만약 탐색중 배열의 값이 일치하게 되면 break를 걸어 더이상 무의미하게 탐색되지 않도록 걸어주고, 배열의 마지막까지 겹치는 값이 없다면, 결과값에 i를 더해준다.
다중 for문을 이용하지 않는 방법으로는 0~9의 값을 모두 더해주고, 배열의 값들을 순차적으로 빼준다면 한번의 for문을 통해 해결할 수 있다.
출처 : 프로그래머스 lv.1