철수와 영희는 숫자가 적힌 카드들을 절반씩 나눠 가진 후, 두 조건중 하나를 만족하는 가장 큰 양의 정수 a의 값을 구하려고 한다.
- 조건1. 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있지만, 영희가 가진 카드들에 적힌 모든 숫자들은 나눌 수 없어햐 하는 양의 정수 a.
- 조건2. 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있지만, 철수가 가진 카드들에 적힌 모든 숫자들은 나눌 수 없어햐 하는 양의 정수 a.
function getNum(arrayC) { var num = []; let count = 0; for (let j = 2; j <= arrayC[0]; j++) { if (arrayC[0] % j == 0) { num.push(j); } } for (let j = 0; j < arrayC.length; j++) { for (let n = 0; n < num.length; n++) { if (arrayC[j] % num[n] != 0) { num.splice(n, 1); n--; } } } return num; } function solution(arrayA, arrayB) { var answer = 0; var check = 0; var num = []; var check = []; num = getNum(arrayA); for (let i = 0; i < arrayB.length; i++) { for (let n = 0; n < num.length; n++) { if (arrayB[i] % num[n] == 0) { num.splice(n, 1); n--; } } } if (num.length < 1) answer = 0; else answer = Math.max.apply(null, num); return answer; }
- 문제가 쉬운데, 답은 틀렸다고 나오니 도저히 알 수 없는 상황!!
- 분명 엄청 쉬운 실수라고 믿고, 나중에 다시 풀어보니
function solution(arrayA, arrayB) { var answer = 0; var num = []; var max = 0; num = getNum(arrayA); answer = find_max(num, arrayB); num = getNum(arrayB); max = find_max(num, arrayA); if ( max > answer) answer = max; return answer; } function find_max(num, arr) { for (let i = 0; i < arr.length; i++) { for (let n = 0; n < num.length; n++) { if (arr[i] % num[n] == 0) { num.splice(n, 1); n--; } } } if (num.length < 1) return 0; else return( Math.max.apply(null, num)); } function getNum(arrayC) { var num = []; let count = 0; for (let j = 2; j <= arrayC[0]; j++) { if (arrayC[0] % j == 0) { num.push(j); } } for (let j = 0; j < arrayC.length; j++) { for (let n = 0; n < num.length; n++) { if (arrayC[j] % num[n] != 0) { num.splice(n, 1); n--; } } } return num; }
- 정말 당연한 실수를 발견
- 조건1만 신경쓰다, 조건2를 잊고있었던 것!!