코테 준비를 위한 Java Script 공부하기
배열 array i~j숫자 자르고 정렬후 k번째 수 구하기
//commands 는 i j k의 배열을 인자로 가진 배열
function solution(array, commands) {
return commands.map((el,i) => {
const [start, end, index] = el;
return array.slice(start - 1, end).sort((a,b) => a-b)[index - 1]; // array.slice.sort 한 배열의 [index - 1] 번째
})
}
commands.map((el,index,this) => {}) //map은 el(요소),index(요소의 순서),this(배열 자체) 값들을 0번째 index부터 마지막 index까지 return(?) 해줌
배열 속 배열(c언어의 2차원 배열-> commands[][])은 commands.map의 el의 값이 commands[]을 의미하기 때문에 새 배열을 const에 만들어 i j k의 값을 넣어줬다.
array.slice(s-1 , e) // (s-1)~(e-1)번까지배열을 잘라준다는 의미
.sort((a,b) => a-b ) // a-b가 참을 만족할때 까지 -> 오름차순 배열
3진법 뒤집기
const solution =(n) => parseInt(n.toString(3).split('').reverse().join(''), 3)
parseInt(a,n) n진수인 a를 10진수로 바꾸는 함수
n.toString(n1) // 10진수 n을 n1진수로 바꿈
split('') // ''기준으로 배열 만듦 (int값이 배열로 바뀜)
reverse() // 배열의 순서 거꾸로
join('') // ''기준으로 배열이(int , str과 같은 const값으로) 합쳐짐
두 개 뽑아서 더하기
function solution(numbers) {
const Arr = numbers.map((el,i,arr1)=>{
return numbers.map((el2,i2,arr2)=>{
if(i === i2){
return -1;
}
return el + el2;
})
})
const arr2 = Arr.flatMap((el) => el)
Arr.sort((a,b) => b-a) // Arr자체 배열이 바뀜
const Arr1 = [...arr2].sort((a,b) => a - b) //Arr자체는 유지하면서 [...Arr]을 통해 새로운 배열 만듦 ... -> 전개 연산자
return Array.from(new Set(Arr1)).filter((el) => el !== -1)
}
map속에 map을 이용함으로써 같은 배열의 el값을 값을 더해주기 가능
map은 그냥 index번호의 el,i,this의 정보를 끝 번호까지 제공 해주는 역할이라 생각하자!!
[...arr2].sort((a,b) => a-b)
[...arr2] -> arr2에 들어있는 모든 배열의 index값을 그 속이 배열이던 뭐던 한 글자, 숫자씩 펼쳐주기? 제공해주기? ->전개 연산자
Array.from(new Set(Arr1)) //set으로 집합 처리- Arr1에 들어있는 값들 중복 다 사라짐 집합이니까 -> Array.from 함수?로 다시 배열 만들면 중복 사라진 배열이 됨!
filter((el)=> el !== -1) // map만큼 중요한 함수 el!== -1 값이 아니라면 true 즉 el 값을 반환 해줌 -> if문 같이 el !== -1 이 참이라면 el값을 반환!
수박수박수박수박수박수박수박수?
const solution =(n) => new Array(n).fill(0).map((el,i) => ['수','박'][i % 2]).join('')
n값이 인자인 solution 함수는 new Array(n)을 통해 만든 n개의 index를 가진 배열 el을 모두 0으로 채우고 map을 통해 원소 index가 홀이냐 짝이냐에 따라 수박이 반복될 예정이니 수,박이라는 배열의 el을 반환하여 배열을 만들고 이를 join('')을 통해 수박수박수...와 같이 하나의 str로 만들어줌
최대공약수와 최소공배수(그냥 공식처럼 외우기!)
function solution(n, m) {
var answer = [];
const 최대 = (a,b) => (a%b===0) ?b : 최대(b,a%b);
const 최소 = (a,b) =>(a*b/최대(a,b));
return [최대(n,m),최소(n,m)];
}
최대공약수 구하기를 외우고 최소 공배수는 a*b / 최대공약수임을 기억하기
평균 구하기
function solution(arr) {
return arr.reduce((acc,cur)=>acc+cur) / arr.length;
}
reduce 함수는 map함수만큼 중요한 함수 계속해서 배열의 index에 대해 el값을 끝까지 제공해줌!!
arr.reduce((acc,cur) => acc+cur) 과 같이 acc= 저장되어 더해지는 값 cur은 배열의 arr의 index 해당하는 el값임을 이용하여 배열의 모든 el값을 더해줌!
arr.length는 arr배열의 크기를 나타냄!
직사각형 별찍기
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
// 1 : repeat 이용하기
console.log(("*".repeat(a) + '\n').repeat(b));
// 2 : 단순 2중 for문
// for (let i = 0; i < )
// 3 : Array 만들기
// console.log(
// new Array(b).fill(
// new Array(a).fill('*').join('') + '\n'
// ).join('')
// )
// 4
// new Array(a * b).fill('*')
// 5
// return new Array(b).fill(new Array(a).fill('*').reduce((acc, cur) => acc + cur,'')).join('\n')
});
제일 작은수 제거하기
function solution(arr) {
if(arr.length > 1){
return arr.filter((el,i) => el !== Math.min(...arr))
}
return -1;
// arr.splice(arr.indexOf(Math.min(...arr)),1);
// if(arr.length<1)return[-1];
// return arr;
}
음,, 주석처리한 코드와 내 코드와 속도차이가 심하다 문제점이 뭔지 정확히 파악은 안되지만 아마 filter는 모든 값을 반복한다는 점에 있어서 속도가 느려진 것 같다!
Math.min(...arr) arr의 배열중 가장 작은 값 return해주는 함수
arr.indexOF(찾는 값,시작 위치) 시작 위치부터 찾는 값이 처음 나온 index를 반환해줌
arr.splice(i1,i2,i3...n) i1번째부터 i2번째 까지 리턴 후 원 배열에는 삭제됨 i3~n까지 추가
i1,i2는 필수 i3부터는 없으면 제거만 진행함
Java Script의 장점은 함수형에 존재하는거 같다
이번 기회에 함수형을 처음 접하게 된것 같은데 사람이 말하는 대로 동작이 이루어 지는게 신기했다!
filter reduce map을 사용하면 모든게 만들어짐.
Author And Source
이 문제에 관하여(코테 준비를 위한 Java Script 공부하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@boo/코테-준비를-위한-Java-Script-공부하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)