티스토리 뷰
문제
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며,
아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
풀이
function solution(arr) {
let answer;
let sum = arr.reduce((a, b) => {
return a + b;
}, 0);
endOfCircuit: for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (sum - (arr[i] + arr[j]) === 100) {
//console.log(arr[i]);
//console.log(arr[j]);
arr.splice(j, 1);
arr.splice(i, 1);
// arr.splice(j - 1, 1); 1. j먼저 splice하고 i를 하면 순서에 상관이 없다. 2 . i먼저 없애더라도 j-1 로 없애주면 된다.
break endOfCircuit; // (sum - (arr[i] + arr[j]) === 100) 조건을 2번 만족시키면 계속 splice 하여 정답이 아니게 되므로 첫번째로 조건을 만족시킨다면 for문을 멈춰준다.
}
}
}
answer = arr.join(" ");
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 28, 8, 13];
console.log(solution(arr));
reduce로 배열의 원소를 모두 합친 값을 구한뒤 이중 for문으로 두개의 원소를 모두 조합해보아서 sum - 두 원소를 했을 때 100을 만족시키는 조합이 있다면 두 값의 인덱스를 구해 splice 해준다. 또한 break로 for문을 멈추어 준다.
이로 인해 알게된 점
splice의 2가지 방법과 break 를 할 때 for문에 이름을 붙일 수 있는지 알게 되었습니다.
'알고리즘 > 코딩테스트 공부' 카테고리의 다른 글
1-10 문자 찾기 (0) | 2021.11.24 |
---|---|
1-9 A를 #으로 (0) | 2021.11.24 |
1-7 10부제 (0) | 2021.11.24 |
1-6 홀수 (0) | 2021.11.23 |
1-5 최솟값 구하기 (0) | 2021.11.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 북클럽
- 스토리 북
- TopLayer
- NextApiRequest
- WSL2
- 위코드
- nodejs
- 초보
- error
- 프론트앤드
- 노개북
- createPortal
- import/order
- jest
- 아차산
- C언어
- NextRequest
- 우아한테크코스
- 원티드
- 프리온보딩
- CLASS
- 노마드코더
- electron
- React
- 윤성우 열혈C프로그래밍
- nextjs
- javascript
- Storybook
- env
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함