inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

8. 일곱난쟁이

제 실력으로 최대한 머리 짜내서 혼자 풀어 보았습니다. 너무 허접 할까요?

348

rhkdtjd_12

작성한 질문수 138

0

<script>
function solution(arr) {

 const initialValue = 0;
 const result = arr.reduce((prev, current) => prev + current,
   initialValue);

 const overSum = result - 100;
 const pickNum = [];
 for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length; j++) {
       if (arr[i] === arr[j]) continue;

       if (arr[i] + arr[j] === overSum)        pickNum.push(arr[i]);
    }
 }

 return arr.filter((val) =>
 val !== pickNum[pickNum.length - 2] &&
 val !== pickNum[pickNum.length - 1]
 );

}

let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
//let arr = [25, 7, 23, 19, 10, 55, 20, 8, 13];
//let arr = [33, 9, 23, 17, 10, 55, 20, 8, 13];
//let arr = [13, 9, 61, 17, 11, 22, 20, 8, 70];
console.log(solution(arr));
</script>

 

코드 설명

  1. reduce 함수로 먼저 모든 9명의 난쟁이 녀석들 합을 구합니다.

  2. 난쟁이 합은 총 100이니까 9명의 난쟁이 합 - 100을 합니다. ( 100보다 작을순 없으니까)

  3. 범인은 2명이니까 중첩 for문을 돌려서 두명의 합이 2번의 값과 같은 녀석을 구합니다. pickNum 배열에 첫번째 녀석과 두번째 녀석이 담깁니다.

  4. filter함수를 이용해서 첫번째 가짜 난쟁이 값과 두번째 가짜 난쟁이 값에 해당하지 않은 녀석들로 진짜 난쟁이들 배열을 구성합니다

여러가지 테스트 케이스를 만들어서 해보았는데, 진짜 난쟁이들 잘 찾습니다

 

 

javascript 코딩-테스트

답변 2

0

김태원

안녕하세요^^

스스로 이정도 하시면 잘 하신 코드입니다.

일곱난쟁이 오류수정 영상도 꼭 보시기 바랍니다. 또한 영상의 방법으로도 풀어보시기 바랍니다.

0

rhkdtjd_12

넵 일곱난쟁이 오류수정 영상 보니, 제 코드에도 똑같은 오류가 발생 하더라고요 감사합니다

0

인프런 AI 인턴

안녕하세요 rhkdtjd_12 님, 인프런 AI 인턴이에요.

코드를 보니 직접 문제를 해결하기 위해 머리를 짜내어 작성한 것 같습니다. 그리고 여러 가지 테스트 케이스를 활용하여 코드를 확인한 결과 진짜 난쟁이들을 잘 찾는 것으로 보입니다.

코드에 대한 자세한 설명도 함께 해주셔서 이해하기 쉬웠습니다. 좋은 노력이었습니다!

추가적인 개선사항이나 질문이 있으시면 언제든지 말씀해주세요. 감사합니다!

continue를 사용하는 이유

0

79

2

정렬 가능 여부 판단하기

0

64

2

알고리즘 학습법 관련해서 질문드립니다.

0

86

1

코드 리뷰 부탁드립니다!

0

90

1

indexOf를 사용해서 풀어보았습니다 !!

0

68

1

저는 이런식으로 구현 해보았습니다 !!

0

64

1

12,13,14 강의 소리만 나오고 검은 화면입니다

0

100

3

반복문 최소화하고 indexOf 사용해서 풀어봤습니다

0

63

1

영상 보기 전에 직접 풀어봤습니다.

0

74

1

섹션1의 17번문제 이 풀이로 풀어도 될까요?

0

136

2

정규표현식으로 처리해도 상관없나요 ?

0

120

2

3칸씩 건너뛸 수 있을 경우

0

126

2

강의에 대해 질문있습니다.

0

135

2

Object와 Set을 이용해 풀어봤습니다.

0

117

2

이렇게 해도 되나요?

0

102

2

선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.

0

145

2

이렇게 풀어도 괜찮을까요?

0

138

1

이렇게 풀어도 괜찮을까요?

0

112

1

모든 아나그램 찾기에서 시간복잡도

0

98

1

코드리뷰 부탁드립니다.

0

130

1

for loop 탈출은 return 문으로 해도 되지 않나요?

0

133

1

투포인트알고리즘으로 풀어봤습니다.

0

142

0

코드 리뷰 부탁드립니다.

0

120

1

코드 맞게 작성한 거 아닌가여??

0

146

1