안녕하세요!
오늘은 제가 의도한 대로 문제를 풀고싶어서 고민을 많이했던 코딩테스트를 가지고 왔습니다.
시도 1.
없는 숫자를 어떻게 골라내지 생각하다가 노가다로 ||(또는) 연산자를 사용해서 없는 숫자를 고르고 싶었으나,,
그럼 없는 숫자들은 어떻게 더하지..? 라고 생각이 들고는,,,
답이 안나와서 다른 시도를 했습니다.
시도 2.
이중 for문을 사용하여 "numbers 배열에 들어있는 값( i )" 과 j를 선언하여 비교해서 없는 숫자를 더하고 싶었습니다
그러나 비교해서 없는 숫자를 다 더하다보니깐 있는 숫자까지 더해버리는 결과를 초래하게 되더군요
사실, 왜이렇게 복잡하게 풀지??라는 생각이 들 수 있지만
(다른분들 풀이 보니깐 0~9까지 더한다음에 numbers의 합을 빼줘서 간단하게 풀더라구요)
저는 문제 그대로 없는 숫자만 골라서 더하고 싶더라구요ㅎㅎ
그래서 마지막에 생각해낸 방법이 컬렉션 "Set"을 이용하기였습니다.
시도 3.
일단 컬렉션 Set을 선언하여
1. for문을 이용하여 allNumbers에 0~9 값을 넣어줍니다.
2. for문을 이용하여 numbers배열에 있는 값을 remove메서드를 사용하여 allNumbers에서 지워줍니다.
3. 이제 allNumbers에 남아있는 값들은 "없는 숫자들"입니다. 그래서 남아있는 숫자들을 다 더해주면 됩니다.
제가 의도한대로 풀리니깐, 괜시리 너무 뿌듯하더군요ㅎㅎ
오늘의 요약
알고리즘 문제를 풀 때, 컬렉션으로 풀기 위해서는 import를 꼭 해줘야 합니다.
'TIL(Today I Learned)' 카테고리의 다른 글
[Java/코딩테스트] 가운데 글자 가져오기 (0) | 2024.08.16 |
---|---|
[Java] 클래스 관련 문제 (0) | 2024.08.14 |
[MYSQL] DATETIME에서 DATE로 형 변환 (DATE_FORMAT) (0) | 2024.08.12 |
[Java/코딩테스트] 음양 더하기 ( + 지역변수에 대하여) (0) | 2024.08.09 |
[MySQL/코딩테스트] NULL 처리하기(IFNULL, CASE, COALESCE 사용) (0) | 2024.08.08 |