문제 풀기/JavaScripts 67

문제 17. 자연수 뒤집어 배열로(난이도 7)(split, reverse, map(Number))

반복문 없이 풀기 위해 먼저, 정수 n을 toString()으로 문자열로 바꿔줬다. 그 후 JavaScript에서 문자열을 문자 단위로 나눌 수 있는 함수를 알아 본 결과split() 함수가 존재했다. 그래서 split('')으로 문자열을 문자로 쪼갤 수 있었다. 이렇게 조각난 문자들을 reverse()함수로 역순서를 바꿔주었다. 하지만, revese() 한 문자들을 parseInt()로 정수 형변환을 시도한 결과제일 앞에 있는 정수만 정수로 형변환 됐다. 인터넷에서 문자 전체를 정수로 형변환할 수 있는 방법을 찾아 본 결과map(Number)로 가능하다는 사실을 알게 됐다.(정확한 이유는 아직 모름...) 제출한 코드 :  function solution(n) {     return n.toString..

문제 16. x만큼 간격이 있는 n개의 숫자(난이도 6)

반복문을 안 쓰고 문제를 해결해보려고 시도해봤지만, 아직 문법을 제대로 배우지 않았고, 방법이 떠오르지 않아 결국 반복문을 사용해 문제를 풀게 됐다... 그 과정에서 let answer = []라는 배열에 값을 넣는 방법으로 push를 사용해야 한다는 사실을 학습했다. 제출한 코드 :  function solution(x, n) {     var answer = [];     for(let i = 1; i     {         answer.push(x * i);     }     return answer; }

문제 15. 나머지가 1이 되는 수 찾기(난이도 5)

반복문으로 i를 1부터 n까지 i++ 하면서 결과 값을 찾을 수 있지만, 그렇게 되면 반복 효율이 좋지 않아깊게 생각해보았다. 그 결과 n이 홀수일 경우 무조건 2가 정답이라는 사실을 발견했고, 3부터는 2를 더해주면서 비교할 경우 더 빠르게 결과값을 찾을 수 있다는 사실을 발견 했다. 제출한 코드 :  function solution(n)  {     if (n % 2 === 1) return 2; // n이 홀수인 경우 i = 2가 항상 해답     for (let i = 3; i     { // 홀수 i만 검사         if (n % i == 1) return i;     } }

문제 14. 악수의 합(난이도 4)(Math.sqrt())

단순하게 반복문에서 i를 1부터 n까지 i++ 하면서 n % i == 0인지 확인하고, 더해주면 쉽게풀 수 있지만 그러면 반복문의 효율성이 떨어진다 생각해 수학의 ROOT를 사용하기로 결정했다.찾아 본 결과 Math.sqrt()로 Root값을 구할 수 있었고, 그 결과 반복 횟수를 O(Root(N))만큼줄일 수 있었다. 제출한 코드 :  function solution(n) {     let answer = 0;     for(let i = 1; i     {         if(n % i == 0)         {             answer += i;             if (i !== n / i)              {                 answer += n / i;    ..

문제 13. 자릿수 더하기(난이도 4)(toString(), 문자열에서 문자 추출)

나머지 연산자와 나누기 연산자를 활용하면 쉽게 문제를 풀 수 있지만, 다른 형태로 문제를풀어보고 싶어졌다. 함수의 매개변수로 전달 받은 n은 정수여서 JavaScript에서 문자열로 바꾸는 함수가 있는지확인해 본 결과 .toString()함수가 존재했다. 그리고 저번에 학습한 for의 여러 방식 중 for(let 변수 in 변수)을 사용한 형태로 문제로문자열의 index를 이용해 문자열의 문자들을 하나 씩 더하는 방식으로 문제를 해결했다. 이때, JavaScript는 문자열에서 문자를 추출할때 변수[index 값]으로 원하는 문자를추출 가능했다. 제출한 코드 :  function solution(n) {     let result = 0;     const temp = n.toString();     f..

문제 12. 평균 구하기(난이도 7)(reduce 함수)

JavaScript에 배열에 담긴 값의 평균을 구하는 함수가 있을까 찾아본 결과 Avg()같이 직접적으로 평균을구하는 함수는 없었다... 하지만 reduce() 함수를 사용해 반복문 없이 sum을 구하고, sum / arr.length로 평균을 쉽게 구할 수 있었다. reduce 함수의 사용 방법으로는 reduce((누산값, 현재 값, 현재 인덱스, 원본 배열) => 계산 과정, 초기값) 형태로사용할 수 있었다. 제출한 코드 :  function solution(arr)  {     const sum = arr.reduce((acc, cur)=> acc + cur, 0);     return sum / arr.length; }

문제 10. 배열의 평균값(난이도 7)(반복문 형태, 배열의 길이)

for(let i = 0; i 로 answer에 numbers가 저장하고 있는 정수 배열들을 모두 더할 수도 있었지만,for문의 다양한 종류를 바탕으로 풀기에 도전했다. for, while, do while문은 모두 사용할 수 있었고, C#에서 forech와 같이 for( 변수 in 배열, 딕셔너리) 사용도 가능했다.그래서 혹시나 C#의 변수.where()과 같은 문법이 있나 찾아본 결과변수.forEach()가 존재했다. forEach(저장된 값, 인덱스, forEach를 호출한 배열) 순으로 return 값이 존재했고,호출 방법은 forEach((저장된 값, 인덱스, forEach를 호출한 배열) => )로 순차적으로 호출 가능했다.  아직 인덱스와 forEach를 호출한 배열로 무언가를 해보지는 않았..

문제 9. 짝수의 합(난이도 4)(변수 선언 방법(var, let, const))

처음에 for문에 사용되는 변수를 C 계얼 언어, Java 언어처럼 int i로 선언 했는데 오류가 발생했다.알고보니, JavaScript에서는 변수 선언을 var, let, Const 3가지로만 사용한다는 사실을 알게 됐다. var은 전역 변수 같은 형태로 초기화가 돼 있지 않으면 "undefined"가 할당되고 기존에 동일한 이름으로 선언돼 있더라도var "동일한 이름"으로 다시 재선언이 가능했다. 하지만, 위의 사례들 때문에 스스로 오류가 발생할 수 있고, 코드가 어떤 것을 수행하는지 알 수 없다는 단점이 있다.  => 따라서, 되도록 사용하지 않는 것이 좋다. let은 지역 변수 같은 형태로 var가 달리 재선언이 불가능 하다. 하지만, 변수 재할당은 가능하다. Const는 변수 재선언, 재할당이..