섹션1-8 일곱난쟁이 문제 질문
659
投稿した質問数 7
안녕하세요. 강의 코드와 결과가 이해가 되지 않아 질문드립니다.
for (let i = 0; i < 8; i++) {
for (let j = i + 1; j < 9; j++) {
if (sum - (arr[i] + arr[j]) === 100) {
arr.splice(j, 1);
arr.splice(i, 1);
}
}
}중첩 for문 중에서 내부에서 조건문을 사용해서 참일 경우 배열에 splice를 통해 요소를 제거를 해주는 코드에서 의문이 생겼습니다.
중첩 for문이기 때문에 외부 for문에서
i=0으로 시작하여 내부 for문으로 이동j=i+1이므로 배열의 0번째 인덱스 요소를 기준으로 1번째 인덱스 요소부터j<9요소까지 탐색탐색 중
if (sum - (arr[i] + arr[j]) === 100)조건에 참인 요소가 있다면splice메서드를 통해 제거,j<9요소까지 탐색을 마쳤다면 내부 for문 종료다시 외부 for문으로 이동하여
i=1로 증감 후 다시 내부 for문 실행..
저는 이와 같은 절차를 가진다고 생각하는데요, 3번 절차에서 조건에 참인 요소가 있다면 splice 메서드를 통해 제거가 되므로 21과 19가 제거 되는것은 이해가 되는데 왜 15와 25까지 함께 제거가 되는지 의문입니다! 21과 19가 제거된 상태라면 (sum - (arr[i] + arr[j]) === 100) 조건에 참일 수가 없을 거 같아서요.
결론은 중첩 for문인데 21과 19 그리고 15와 25까지 함께 제거가 되는지 의문입니다!
감사합니다.
回答 4
1
안녕하세요, 인프런 AI 인턴이에요.
이 문제는 문제 조건에 따라 9명의 난쟁이 중에서 일곱 명의 키의 합이 100이 되는 경우를 찾는 문제입니다.
제가 예상하건데, 15와 25가 함께 제거되는 것은 21과 19가 이미 제거된 상태이기 때문입니다. 중첩된 for문을 사용할 때, 내부 for문에서 splice 메소드로 요소를 제거하면 배열의 인덱스가 변경될 수 있습니다. 그래서 21과 19가 제거된 후에는 15와 25의 인덱스가 5, 6이 아니라 4, 5가 됩니다. 그렇기 때문에 15와 25도 함께 제거됩니다.
따라서, 외부 for문에서 i=3일 때 해당 조건문이 참이 되면, 21, 19, 15, 25가 모두 제거되고, 결과적으로 키의 합이 100이 되는 일곱 명의 난쟁이를 찾아낼 수 있습니다.
이해에 도움이 되었길 바라며, 추가적인 질문이 있으시면 언제든지 댓글로 문의해주세요.
0
안녕하세요 강사님 break말고 바로 return 해도 되나요?
function solution(arr){
const answer = arr; // 얕은 복사(메모상에 같은 주소를 가리킴).arr이 바뀌면 answer도 바뀌는 것 처럼 보임
const sum = answer.reduce((acc, v)=>{
return acc + v;
},0)
for(let i=0; i < answer.length; i++){
for(let j = i+1; j < answer.length; j++){
if((sum - (answer[i]+ answer[j])) === 100){
// 뒤에 인덱스부터 없애도 앞의 인덱스는 변함이 없다.
answer.splice(j, 1);
answer.splice(i, 1);
// arr.splice(i, 1);
// arr.splice(j-1, 1);
return answer;
}
}
}
}
const arr=[22, 7, 21, 19,10, 15, 25 ,8, 13];
console.log(solution(arr));
continue를 사용하는 이유
0
78
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
85
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
99
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
133
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
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
141
0
코드 리뷰 부탁드립니다.
0
119
1
코드 맞게 작성한 거 아닌가여??
0
146
1

