두수의 곱 = 최대공약수 * 최소공배수function solution(n, m) {
let S = 0; //최소공배수
let L = 0; //최대공약수
//최대공약수 구하기
let num = n<m? n:m;
for(let i=1; i<=num; i++){
if(n%i===0 && m%i===0) L=i;
}
//최소공배수 구하기
S=n*m/L;
return [L, S];
}
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)), 1);
if(arr.length===0) arr.push(-1);
return arr;
}
Math.min(...arr)와 같이 사용할 것 return arr.splice()형태로 작성하면 '삭제된요소'를 리턴한다. 반드시 arr.splice()해준 후에 return arr를 해줘야 요소가 삭제된 배열을 가져올 수 있다.const x=arr.splice()를 해주면 x에는 삭제된 요소가 들어간다. n이 어떤 양의 정수 x의 제곱인지 판단... (양의정수 x의 제곱이라면 x+1의 제곱 리턴, 아니라면 -1리턴)
function solution(n) {
n = Math.sqrt(n);
return (Number.isInteger(n)) (n+1)*(n+1):-1;
}
Math.pow(n+1, 2)와 같이 쓰거나, (n+1)**2와 같이 쓸 수 있다. function solution(s) {
return s=s.split(' ').map(word => {
let result='';
for(let i=0; i<word.length; i++) {
if(i%2===0) {
result+=word[i].toUpperCase();
}
else result+=word[i].toLowerCase();
}
return result;
}).join(' ');
}
s[0]=s[0].toUpperCase()) 하지만, result+=s[0].toUpperCase()와 같은 형태는 된다.123➡️6
function solution(n)
{
return n.toString().split('').map(v => Number(v)).reduce((a, b) => a+b, 0);
}
function solution(n) {
n = n.toString().split('').reverse().map(v => Number(v));
return n;
}
function solution(n) {
return Number(n.toString().split('').sort((a, b) => b - a).join(''));
}
sort()는 기본적으로 문자정렬이기 때문에, 숫자를 정렬하고 싶은데 그냥 sort()를 하면 제대로된 정렬이 되지 않는다. 하지만 콜백함수를 넣으면 문자라도 숫자의 형태로 제대로 정렬된다.
String.replace()에 정규식이 아닌 문자열이 들어가면, 문자열이 발견되는 최초의 요소만 교체된다. 만약 해당하는 모든것을 교체하고 싶다면, 정규표현식을 사용하면 된다.(javascript에는 replaceAll이 없기때문에 주의!)for(let i=0; i<number.length; i++){
let regexAll=new RegExp(number[i], 'g');
if(s.includes(number[i])) s=s.replace(regexAll, i);
}
3➡️'수박수'
4➡️'수박수박'
function solution(n) {
let answer='';
for(let i=1; i<=n; i++){
answer+= (i%2)? '수':'박';
}
return answer;
}
function solution(n) {
return '수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
}
function solution(phone_number) {
let answer='';
const n=phone_number.length;
for(let i=0; i<n-4; i++){
answer+='*';
}
answer+=phone_number.substring(n-4, n);
return answer;
}
function solution(phone_number) {
return phone_number.replace(/\d(?=\d{4})/g, '*');
}
function solution(a, b) {
return a.reduce((acc, v, i) => acc + (v*b[i]), 0);
}
return A.map((a,i) => a.map((b, j) => b + B[i][j]));
x:2, n:5 ➡️ [2, 4, 6, 8, 10]
function solution(x, n) {
return Array(n).fill(x).map((v, i)=>v*(i+1));
}
function solution(absolutes, signs) {
return absolutes.reduce((acc, v, i) =>acc + (v*(signs[i]? 1 : -1)), 0);
}
if(signs[i]==='true')로하면 안됨. signs안에 들어가있는 true, false는 문자가 아니라 boolean형태이기 때문에 if(signs[i])와 같은 형태로 작성하면 if(true)라는 소리와 같음.function solution(arr)
{
return arr.filter((v, i) => v !== arr[i+1]);
}
Number(s)parseInt(s): 문자열에 숫자 연산으로 인해 숫자로 자동 파싱(아래도 마찬가지) s/1Math.floor(s)function solution(arr, divisor) {
arr=arr.sort((a, b)=>a-b).filter(val => val%divisor===0)
if(arr.length===0) arr.push(-1);
return arr;
}
(양끝의 합)*(숫자의갯수/2)function adder(a, b){
return (a+b)*(Math.abs(b-a)+1)/2;
}
function solution(left, right) {
let answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
function solution(num){
let arr=Array.from({length:num+1}, ()=>1);
arr[0]=0, arr[1]=0; //0, 1은 소수가 아니다(제외)
for(let i=2; i*i<num; i++){
//아직 지워지지 않았을 때
if(arr[i]){
for(let j=i*i; j<=num; j+=i){
arr[j]=0; //지움(소수 아님)
}
}
}
//지워지지 않은 것 (값이 1인것)
return arr.filter(v => v===1).length;
}
for(let i=0; i<n-2; i++){
for(let j=i+1; j<n-1; j++){
for(let k=j+1; k<n; k++){
if(isPrime(nums[i]+nums[j]+nums[k])) answer++;
}
}
}
Date()let set=new Set()객체에 값 x를 추가하면(set.add(x)) Set은 객체이기 때문에 {x}의 형태로 담긴다. 객체는 {x1, x2, x3...}와 같이 담기며 이를 배열 형태로 만들어주기 위해서는 [...set]과 같이 만들어 주면된다.const sum= x.toString().split('').map(v=>Number(v)).reduce((acc, v)=>acc+v, 0);
정규식.test(문자열)은, 문자열이 정규식을 만족하는지 true or false로 리턴해준다. const re=/^\d{4}$|^\d{6}$/: 숫자로만 길이가 4 or 6으로 구성됨num.toString(n): 10진수를 다른 진수(n)로 변환parseInt(num, n): 다른 진수를 10진수로 변환(num은 n진수인데 이걸 10진수로 변환하고 싶을 때)function solution(strings, n) {
return strings.sort((a, b)=>{
if(a[n]>b[n]) return 1;
else if(a[n]<b[n]) return -1;
else{
if(a>b) return 1;
else if(a<b) return -1;
else return 0;
}
});
}
localCompare() 메소드
s.charCodeAt(i): s문자열의 i인덱스의 아스키를 가져옴String.fromCharCode(asc): 아스키코드를 string화https://programmers.co.kr/learn/courses/30/lessons/12982
padStart()메소드를 사용할 수 있다.padStart(n, '0')은 문자열의 길이를 n으로 지정하고 문자열의 길이가 n 미만이라면 앞을 '0'으로 채우는 메소드이다.padStart()를 떠올리자! (끝을 채울 때는 padEnd())https://programmers.co.kr/learn/courses/30/lessons/1845
[...map].sort((a, b)=>b[1]-a[1])