초보 개발자의 일기
일곱 난쟁이 본문
728x90
문제
입력
- 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며,
- 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
출력
- 입력된 순서대로 일곱 난쟁이의 키를 출력한다.
입력 예시
20 7 23 19 10 15 25 8 13
출력 예시
20 7 23 19 10 8 13
풀이 방법
처음에 for문을 두 번 중첩해서 돌리다가 splice를 사용했는데 j가 자꾸 이상한 게 없어져서
솔루션을 보고 이해했다.
arr.splice(i,1);
arr.splice(j,1);을 하면
i가 없어지면 그 뒤에 있는 원소들이 당겨져서 삭제해야 할 j의 원소의 위치가 달라져서 다른 게 없어진 것이었다.
그래서 j부터 없애고 i을 삭제시키면 문제가 해결되었다.
내 코드
ㅇ
Solution
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr){
let answer=arr;
let sum=answer.reduce((a, b)=>a+b, 0);
for(let i=0; i<8; i++){
for(let j=i+1; j<9; j++){
if((sum-(answer[i]+answer[j]))==100){
answer.splice(j, 1);
answer.splice(i, 1);
}
}
}
return answer;
}
let arr=[20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
</script>
</body>
</html>
느낀 점
splice(a, b)는 a위치에 있는 원소를 b만큼 삭제시킨다는 의미이다.
728x90