Algorithm/Java

프로그래머스 - 없는 숫자 더하기 java :: 월간 코드 챌린지 시즌3

고고마코드 2022. 7. 6. 23:59
반응형
86051번

https://school.programmers.co.kr/learn/courses/30/lessons/86051?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


풀이

📌numbers의 요소는 중복되지 않는다.

📌numbers에 1~9까지 모든 요소가 있다고 가정할 때 그 요소의 합은 45이다.

이 두 가지 핵심을 이용하면 쉽게 풀 수 있습니다.

 

📝풀이1

public int solution2(int[] numbers) {
	int answer = 45;
	for(int num : numbers) {
		answer -= num;
	}
	return answer;
}

1~9를 모두 더한 수는 45입니다.

45에서 numbers에 존재하는 모든 수를 빼면 1~9 중 존재하지 않는 수들의 합을 구할 수 있습니다.

 

📌테스트 케이스 처리속도: 0.01ms

 

📝풀이2

public int solution(int[] numbers) {
	int answer = 0;
	for(int i=1; i<=9; i++) {
		boolean isContain = false;
		for(int j=0; j<numbers.length; j++) {
			if(i == numbers[j]) {
				isContain = true;
				break;
			}
		}
		if(!isContain) answer += i;
	}
	
	return answer;
}

직접 순회하며 검색하는 방식으로도 풀어봤습니다.

처리속도는 조금 느려졌지만 이 방법은 어떤 수가 비었는지도 알아낼 수는 있습니다. (물론 필요없지만...)

 

📌테스트 케이스 처리속도: 0.02ms

반응형