본문 바로가기

JavaScript

getter와 setter 간단명료 정리! 일단 코드는 아래 페이지에 있다. getter는 뭘까? 객체 내에 있는 함수로 객체의 프로퍼티들을 함수에서 사용할 수 있게 해준다. 프로퍼티들의 value 값들을 갖고 다양한 함수를 만들 수 있다. setter는 뭘까? setter가 있으면 객체의 프로퍼티 값들을 외부에서 바꿔줄 수 있다. 그렇다면 getter 와 setter 의 조합되면 setter 로 프로퍼티 값들을 바꿔 주고, 그 바뀐 값들로 getter가 함수로 실행해 줄 수 있다. 이 모든 작업을 객체 외부에서 객체에 접근하듯이 직관적으로 수행할 수 있다. getter와 setter 모두 객체 안에 프로퍼티처럼 존재하기 때문이다. 자세한 코드는 아래 페이지를 참조바란다. https://ko.javascript.info/property-acces.. 더보기
재귀함수. 집요한 정리 프로그래머스 문제 하나가 재귀함수를 필요로 했다. 아래 문제이다. 소수 만들기이다. https://school.programmers.co.kr/learn/courses/30/lessons/12977 그래서 재귀함수를 들여다보았는데 문제를 풀기 위해 내가 들여다 본 재귀함수는 아래와 같다. const getCombinations = (arr, num) => { const results = []; if (num === 1) return arr.map(v => [v]); arr.forEach((fixed, index, origin) => { const rest = origin.slice(index + 1); const combinations = getCombinations(rest, num - 1); cons.. 더보기
자연수가 하샤드 수인지 판별하는 알고리즘 문제는 역시 제목 그대로이다. 자세한 문제는 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12947 나의 답안은 아래와 같다. function solution(x) { a = x.toString().split('').map(Number).reduce((acc, cur)=>acc+cur) return x % a===0 ? true : false; } x = 18 console.log(solution(x)) 이번 문제는 주차하고 집에 돌아오면서 생각해 보았는데 잘 떠올라 줘서 감사하다. 여러 메서드를 섞어 쓰게 되었는데 느낀 점은, 메서드를 잘 알면 정말 편하리라는 점이다. 복잡한 코드를 4분의1도 안되게 줄여 주고, 메서드 이름 덕분.. 더보기
자연수가 몇 번째 콜라프 작업에서 1이 되는지 파악하는 알고리즘 문제는 제목 그대로다. 만약 그 자연수가 500번째 콜라프 작업으로도 1이 되지 않는다면 함수는 -1을 반환해야 한다. 자세한 문제는 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12943 재귀함수를 써야 할 거 같아서 1.5시간 이상 고생했으나 실패했다. 여기 while문으로 해결한 사례가 있어서 주석으로 파보았다. 코드는 거의 외운거 같다. function collatz(num) { var answer = 0 ; while(num !== 1 && answer < 500) { // answer 더보기
배열 2개의 내적 구하는 알고리즘 feat. reduce(acc, _, i) 내적이란 단어는 생소하지만 문제에 대한 자세한 설명은 아래 링크에 있다. https://school.programmers.co.kr/learn/courses/30/lessons/70128 아래는 나의 답안이다. function solution2(a, b) { var answer = 0; for(let i =0; i < a.length; i++) { answer = answer + a[i]*b[i] } console.log(answer); return answer; } a = [-1,0,1] b = [1,0,-1] solution2(a,b) 참 쉽다 쉬워~ 이러면서 풀었는데 reduce(acc, ___, i) 라는 메서드를 써서 만든 답안을 보고 깜짝 놀랐다. 답안은 아래와 같다. 내가 상세한 주석을 덧붙.. 더보기
나누어 떨어지는 숫자들로만 배열을 만드는 알고리즘 문제는 제목 그대로다. 자세한 문제 출처는 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12910 일단 나의 코드는 아래와 같았다. function solution(arr, divisor) { var answer = []; arr.map((element) => { if(element % divisor === 0) { answer.push(element) } }) if(answer.length===0) { answer.push(-1) } answer.sort((a,b) => a-b) return answer; } 복잡하다. 그리고 모범답안? 을 보고 내가 쳐본 코드는 아래와 같다. filter () 메서드를 사용했다는 점이 포인트다... 더보기
두 정수 사이에 있는 정수들의 합을 구하는 알고리즘 제목과 같은 코딩테스트 문제이다. 자세한 내용은 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12912 나의 순도 99% 답안은 아래와 같다. 자세한 내용은 주석 참조. function solution(a, b) { var answer = 0; // 일단 answer는 0 이다. if(a 더보기
문자열의 가운데 글자를 가져오는 알고리즘 제목 그대로다. 문제는 아래 링크와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12903 내가 작성한 버전이다. function solution(s) { var answer = ''; answer = s.length % 2 === 0 ? // 문자열 s의 문자개수가 짝수라면 : 앞의 것을 answer에 넣는다. s.slice(s.length/2-1, s.length/2+1) : // slice 메서드로 가운데 2개의 문자열 추출한다. s[Math.floor(s.length/2)] // s의 문자개수가 홀수라면 s.length/2를 하면 n.5 가 나온다 // floor 메서드로 내림하여 가운데 문자열의 순서를 찾는다. console.lo.. 더보기