본문 바로가기

일반 학습/코딩 테스트59

[JavaScript] 재귀함수로 최대공약수 최소공배수 찾기 function solution(a, b) { var gcd = calc_gcd(a, b); var lcm = (a * b) / gcd; return [gcd, lcm]; } function calc_gcd(a, b) { if (b == 0) return a; return a > b ? calc_gcd(b, a % b) : calc_gcd(a, b % a); } a>b 가정에서 a를 b로 나눠진다면 b가 최대 공약수가 되고 최소공배수는 a 곱하기 b를 최대공약수로 나누면 된다. calc_gcd에서 a와 b를 받는다. a>b 가 사실이라면 재귀함수를 통해 b와 a와b를 나눈 나머지(r)를 넣는다. 다시 calc_gcd 함수로 들어와 b=>(a와b를 나눈게) 0이라면 b인 a를 리턴한다. 2022. 3. 3.
[JavaScript] Splice function solution(strings, n) { for (let i = 0; i < strings.length; i++) { strings[i] = strings[i].split(""); strings[i].unshift(strings[i].splice(n, 1)); strings[i] = strings[i].join(""); } strings.sort(); for (let i = 0; i < strings.length; i++) { strings[i] = strings[i].split(""); strings[i].splice(n, 0, strings[i].shift()); strings[i] = strings[i].join(""); } return strings; } 1번 Splice(n , .. 2022. 3. 2.
[JavaScript] 키패드를 배열로 만들어 키값간 거리 찾기 키패드를 배열로 만들어 번호간의 위치거리 찾기 function calc(num,lh,rh,pos,hand){ const lD = Math.abs(pos[lh][0]-pos[num][0])+Math.abs(pos[lh][1]-pos[num][1]) const rD = Math.abs(pos[rh][0]-pos[num][0])+Math.abs(pos[rh][1]-pos[num][1]) if(lD===rD) return hand==='right' ? 'R' : 'L' return lD>rD ? 'R' : 'L' } lh의 축과 기준num의 x축 거리와 y축을 각각 계산하여 더하여 lD를 만든다. 2022. 2. 23.
TOY26: LSCS 연속된 부분 배열 더보기 const LSCS = function (arr) { let subpresent =0; let max = Number.MIN_SAFE_INTEGER; for(let i=0; imax) max = subpresent if(subpresent 2021. 11. 15.
TOY19: LPS * slice를 통해서 접두어와 접미어를 두개 나눈다. * 둘은 겹쳐서는 안되기 때문에 최대 길이는 문자열의 절반을 넘어가면 안된다. 결론적으로 마지막 prefix가 되는 배열이 지금껏 suf와 일치했던 것이므로 해당 배열의 길이를 반환한다. 2021. 11. 4.
TOY9: 시간복잡도 거듭제곱 두 수를 입력받아 거듭제곱을 리턴해야 합니다. 효율적인 알고르짐은 시간복잡도를 사용한다. 시간복잡도란 연산을 거듭할때마다 데이터양이 줄어든다. 탈출 if문 처리는 그냥 return을 하게되면 거듭연산을 할 남은 exponent가 홀수이면 한번더 남게 되므로 자기자신(base)에 결과를 곱하여 %조건을 처리하여 나머지를 연산하는 조건을 작성한다. 2021. 10. 30.