매일 매일 하루 한 문제씩.
꾸준히 이어가는 코딩테스트 풀이 기록 ✅
어제 푼 문제는 기록을 못했네..ㅎㅎ
오늘은 잊지 말고 기록하려고 풀자 마자 쓰는 일지.
자바로 풀었을 때는 for문으로 거의 10분 내에 해결한 것 같고, javascript로 풀 때는 for문을 안써보려고 이리저리 헤맸는데..
생각보다 시간이 오래 걸려서 깜짝 놀라기도 했고, 아직 find, filter, map, forEach 등 array 관련 함수들을 사용하는게 자유롭지 않다는걸 느낌.
자바스크립트 코드의 경우 깔끔한 코드는 아니지만 for문을 쓰지 않으려는 노력의 결과물로 기록...ㅋㅋ. 다른사람들의 풀이가 아마 더 간결할거다.
문제.
자바(Java) 및 자바스크립트(Javascript) 풀이 방법 및 코드
Java Solution
class Solution {
public int solution(int n) {
int result = process(n);
return result;
}
public int process(int n) {
for (int i = 2; i < n; i += 1) {
if (n % i == 1) {
return i;
}
}
return n - 1;
}
}
Javascript Solution 1
function makeArray(number) {
return new Array(number).fill(0).map((_, index) => number % index);
}
function findIndex(array) {
const newArray = array.map((value, index) => {
if (value !== 1) {
return 0;
}
return index;
});
const result = newArray.find((value, index) => {
if (value !== 0) {
return index;
}
return 0;
});
return result;
}
function solution(n) {
const newArray = makeArray(n);
return findIndex(newArray);
}
자바스크립트쪽 코드를 좀 더 정리할 수 있어보였는데 생각만큼 잘 안됐다.
근데 정리하다가 findIndex 메서드를 알게되어 요걸로 한번 다시 풀어봤는데 가능!! 역시... 다양한 도구를 가져야 여러 방법으로 풀어볼 수 있는 것 같다.
Javascript Solution 2
function makeArray(number) {
return new Array(number).fill(0)
.map((_, index) => number % index);
}
function findIndex(array) {
return array.map((value, index) => (value !== 1 ? 0 : index))
.findIndex((value) => value !== 0);
}
function solution(n) {
const newArray = makeArray(n);
return findIndex(newArray);
}
아니 근데 웃긴게...ㅋㅋㅋ
function을 만들면서 이름을 findIndex라고 지어놨었는데 그 이름의 메서드가 있었구나...ㅎ..하핳......
여튼 이렇게 또 배우고 간다. findIndex!!
from MDN