알고리즘 어서오고
항해2주차는 알고리즘이었다✍️,,,,,
Javascript도 완벽하지 않은 내가 알고리즘을 할 수 있을까? 싶었다.
신기한게 처음엔 문제를 읽어도 뭔소린지 이해가 안됐는데 ,
그래도 좀 깔짝거렸더니 문제가 대충 어떤 유형이구나 감도 오고
무조건 반복문이랑 조건문으로만 해결 했던 내가 어느새 MDN에서 메소드도 찾아가며
문제를 푸는게 참,, 그래도 하면 어느정도 되긴 되는구나 싶었다.
알고리즘 주차에서 새로 알게된 것들로는
📂 sort() : 배열의 요소를 오름차순, 내림차순 등 으로 정렬 후 반환
sort를 사용해서 풀어본 문제
function solution(arr, divisor) {
var answer = [];
for(i=0; i<arr.length; i++) {
if(arr[i] % divisor == 0) {
answer.push(arr[i]);
} else {
answer.push(-1);
}
}
answer.sort(function(a,b){
return a-b;
});
return answer;
}
console.log(solution([5,9,7,10], 5));
-------첫번째 if문에서 나온 후 sort실행 !
function solution(arr, divisor) {
var answer = [];
for(i=0; i<arr.length; i++) {
if(arr[i] % divisor == 0) {
answer.push(arr[i]);
}
answer.sort(function(a,b){
return a-b;
});
}
if (answer.length == 0) {
answer.push(-1)
}
return answer;
}
console.log(solution([1,3,5,15,20],[5]))
console.log(solution([1],[5]))
📂 map() : 배열 안의 모든 요소에 주어진 함수 결과를 모아 또 새로운 배열을 반환
직접 사용해보진 못했으나,,, 리액트를 오히려 배우며 정확하게 이해하게 된 메소드다,,
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
📂 toString() : 배열의 요소를 문자열로 반환
📂 parseInt(), Number() : 문자열을 숫자로 변환하는데 문자와 숫자가 섞인 값 예를들어 2016년도 같은 단어들을 반환할 때 차이가 있다. 자세한건 알고리즘 TIL에 정리!
📂 split() : 문자열로 쪼개서 요소로 쪼개줌
n이라는 파라미터를 toString 문자열로 바꾸고, split으로 요소별로 쪼개서 Number로 숫자 변환한 문제
function solution(n)
{
var answer = 0;
n = n.toString().split('');
for( let i = 0; i<n.length; i++ ){
answer += Number(n[i]);
}
return answer;
}
📂 revers() : 배열을 거꾸로 뒤집어줌, 원본 배열이 변형됨
function solution(n) {
var answer = [];
n = n.toString().split("").reverse();
for(let i = 0; i<n.length; i++){
answer.push(Number(n[i]));
}
return answer;
}
console.log(solution(23456));
📂 set() : 배열안에서 중복 값 제거. 다시 배열안에서 전개연산자(...)를 사용해서 중복이 제거된 배열을 반환해줌
function solution(numbers) {
let answer = [];
//배열 안에 숫자들을 2중 for문으로 모두 찾는다
for(let i = 0; i < numbers.length; i++) {
console.log(i);
//처음 numbers[i](5) 부터 시작해서
//numbers[j] (0) -> (2) -> (7)을 순서대로
//더한 값을 배열에 넣어주는 것을 반복
for(let j = i + 1; j < numbers.length; j++) {
console.log([j])
//answer.push(numbers[i] + numbers[j]);
}
}
answer.sort((a,b) => a-b);
//배열에서 중복을 제거함
//ex) let str = [2, 3, 4, 3, 2]
// let newstr = [...new Set(str)]
return [...new Set(answer)];
}
console.log(solution([5,0,2,7]));
📂 join() : 배열의 요소를 연결해서 그 연결된 값으로 배열을 반환
앞으로 계속 바쁘겠지만
'놓지만 말자'라는 생각으로 천천히 꾸준히 풀어봐야겠다!!