강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

furler711님의 프로필 이미지
furler711

작성한 질문수

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

8. 일곱난쟁이

for 조건에서 배열의 길이 질문드리겠습니다.

작성

·

265

0

for 조건에서 이 문제에서는 배열의 길이가 주어졌지만, 혹시나 배열의 길이가 유동적일 때를 대비하여 arr.length로 주었는데 이 부분에서 결과값이 제대로 나오지 않는데 어떤 부분때문인지 잘 모르겠어서 질문드립니다.

for(let i = 0; i < (arr.length - 1); i++) {
for(let j = i + 1; j < arr.length; j++) {
if ((sum - (i + j)) == 100) {
arr.splice(i, 1);
arr.splice(j, 1);
}
}
}

이때 arr.length로 처리한 부분만 8, 9로 바꾸면 문제없이 값이 출력되는데 저렇게쓰면 어떤부분에서 오류인건지 잘 모르겠습니다. ㅜㅜ

퀴즈

46%나 틀려요. 한번 도전해보세요!

세 수 중 최솟값을 찾을 때, if 문만 사용한다면 어떤 방식으로 비교하는 것이 일반적인가요?

세 수를 한 번에 비교하여 가장 작은 수를 바로 찾습니다.

두 수의 최솟값을 먼저 찾고, 그 결과와 나머지 한 수를 비교합니다.

가장 큰 수를 먼저 찾은 후, 남은 두 수 중 작은 값을 찾습니다.

모든 가능한 쌍을 비교하여 가장 작은 값을 찾습니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

위 코드는 8, 9로 바꿔도 안나올 코드같은데 나온다고 하니 이상하네요. 풀코드를 보여주셔야 판단을 할 수 있을 것 같지만, 일단 if문에 오류가 있는 것 같습니다.

if((sum-(arr[i]+arr[j]))==100) 로 하셔야 할 것 같습니다.

그리고 splice 도 j 먼저 처리하세요. 왜 j부터 처리해야 하는지 영상에 나와 있습니다.

furler711님의 프로필 이미지
furler711
질문자

if문에 오류가 있었네요 arr[i], arr[j]부분 수정 후 정상적으로 출력됩니다. 감사합니다

furler711님의 프로필 이미지
furler711

작성한 질문수

질문하기