TIL(Today I Learned)

[Java/코딩테스트] 없는 숫자 더하기

yunseohhe 2024. 8. 13. 22:45

안녕하세요!

오늘은 제가 의도한 대로 문제를 풀고싶어서 고민을 많이했던 코딩테스트를 가지고 왔습니다.

 

문제 1
문제 2

 

 

시도 1.

시도 1

없는 숫자를 어떻게 골라내지 생각하다가 노가다로 ||(또는) 연산자를 사용해서 없는 숫자를 고르고 싶었으나,,

그럼 없는 숫자들은 어떻게 더하지..? 라고 생각이 들고는,,,

 

답이 안나와서 다른 시도를 했습니다.

 

시도 2.

시도 2

이중 for문을 사용하여 "numbers 배열에 들어있는 값( i )" 과 j를 선언하여 비교해서 없는 숫자를 더하고 싶었습니다

그러나 비교해서 없는 숫자를 다 더하다보니깐 있는 숫자까지 더해버리는 결과를 초래하게 되더군요

 

사실, 왜이렇게 복잡하게 풀지??라는 생각이 들 수 있지만

(다른분들 풀이 보니깐 0~9까지 더한다음에 numbers의 합을 빼줘서 간단하게 풀더라구요)

 

저는 문제 그대로 없는 숫자만 골라서 더하고 싶더라구요ㅎㅎ

그래서 마지막에 생각해낸 방법이 컬렉션 "Set"을 이용하기였습니다.

 

시도 3.

 

시도 3

일단  컬렉션 Set을 선언하여

1. for문을 이용하여 allNumbers에 0~9 값을 넣어줍니다.

2. for문을 이용하여 numbers배열에 있는 값을 remove메서드를 사용하여 allNumbers에서 지워줍니다.

3. 이제 allNumbers에 남아있는 값들은 "없는 숫자들"입니다. 그래서 남아있는 숫자들을 다 더해주면 됩니다.

 

제가 의도한대로 풀리니깐, 괜시리 너무 뿌듯하더군요ㅎㅎ

 


오늘의 요약

알고리즘 문제를 풀 때, 컬렉션으로 풀기 위해서는 import를 꼭 해줘야 합니다.