문제 풀기/JavaScripts 67

문제 37. 행렬의 덧셈(map 함수)

반복문을 사용한 코드 제출한 코드 : function solution(arr1, arr2) { var answer = arr1; for(let i = 0; i { for(let j = 0; j { answer[i][j] += arr2[i][j] } } return answer; } 반복문을 사용하지 않고 풀 수 있는 방법이 존재할 것이라 생각하고다른 사람의 풀이 법을 찾아 본 결과,map()함수가 존재했다. map()함수는 배열을 순회하며 각 요소를 콜백 함수로 적용해새로운 배열로 반환하기 위한 함수였다. map()함수의 사용법은map((element, index, array)=> ~~~)로 eleme..

뮨제 36. (중요)문자열 다루기 기본(지수 표기법, 비교 연산자)

처음 문제를 보고 단순히 Number.isInteger(Number(s))로 비교를 수행했다... 하지만, 여기에는 2가지 오류가 존재 했는데, 첫번째로, "문자열 s의 길이가 4 혹은 6이고"라는 부분을 만족시켜주지 않아 계속 문제를 틀렸었다.만약) "12345"인 문자열이 들어올 경우 Number함수에 의해 정수가 되고,IsInteger에서 true가 되기 때문이다. 두번째로, Number.isInteger(Number(s))를 사용할 경우Number("3e10") 경우 지수 표기법에 의해Number("3e10") = Number("3 * 10 ^ 10")으로 표기 돼isInteger가 true가 돼 버린다... 위의 경우를 해결하기 위해서는 비교 연산자를 활용해야 하는데,JavaScript에서 ..

문제 35. 부족한 금액 계산하기(가우스 공식)

처음 제출한 코드는 function solution(price, money, count) { let answer = 0; for(let i = 1; i count; i++) answer += (price * i); return money - answer >= 0 ? 0 : answer - money;}위와 같이 반복문으로 금액을 계산해 보유한 금액과 비교하는 방식이었다. '문제를 제출한 후 더 간단한 방식이 존재하지 않을까'?다른 사람 풀이를 본 결과 가우스 공식을 이용해 반복문 없이 계산이 가능했다. (첫 값 + 끝 값) * 숫자 개수 / 2 규칙성이 있는 숫자들의 합을 빠르게구할 수 있었다. 제출한 코드 : function solution(price, money, count)..

문제 34. (중요)문자열 내림차순으로 배치하기(문자열 sort, join)

문제를 보고 split('').sort((a, b)=> b - a).join('')으로 쉽게 구할 수 있을거라 생각했다.그런데 sort()부분이 내 생각처럼 동작하지 않았다. 찾아보니, 숫자 문자열인 경우 b - a로 사칙연산에 의해 내림차순 정렬이 가능 했지만,문자 문자열인 경우 b - a로 사칙연산이 수행될 수 없어 정렬이 불가능 했다. 문자 문자열의 내림차순 정렬 방법은 다음과 같은데, sort((a,b)=> a 로 가능했다. 만약, sort((a,b)=> a sort()로 오름차순 정렬 후, reverse()를 사용해 내림차순 정렬이 가능했다. 마지막으로 split('')에 의해 문자열이 배열의 문자로 나눠졌기 때문에다시 문자열로 만들어주는 함수를 찾아본 결과 join()함수가 존재했고, s..

문제 33. (중요)약수의 개수와 덧셈(Number.isInteger)

내가 제출한 코드 : function solution(left, right) { let sum = 0; for(let i = left; i { let count = 0; for(let j = 1; j { i % j == 0 ? i / j != j ? count += 2 : count += 1 : count += 0; } count % 2 == 0 ? sum += i : sum -= i } return sum; } 위의 코드로 Math.sqrt()로 제곱근을 구해 반복문의 수행시간을 줄이고, 약수의 개수를 구한 후,약수의 개수에 따라 더할건지, 뺄건지 결정을 했다. 그런데!! ..

문제 31. 수박수박수박수박수박수?(repeat, slice)

반복문을 사용하면 쉽게 풀 수는 있지만 수행시간에 불이익이 생겨반복문을 사용하지 않고 풀 수 있는 방법이 없을까? 계속 생각해봤다. 문자열을 반복시켜주는 repeat(n)함수가 있었는데입력한 n개를 바탕으로 "문자 or 문자열"을 n번 반복시켜준다. 그 후, slice 함수로 0 ~ n 까지 잘라준다그러면 index 상에서 0 ~ n - 1까지만잘라주기 때문에 원하는 결과를 얻을 수 있다. 제출한 코드 : function solution(n) { return "수박".repeat(n).slice(0,n) }

문제 29.(중요)제일 작은 수 제거하기(splice, indexOf, Math.min)

나의 오류) 1. 일단 문제를 보고 왜 배열 안에 [10]이라고 있는데 -1이지? 생각했다.위의 경우를 보고 arr.length == 0 || arr.length == 1이라 작성해 arr.length == 1 경우 때문에 계속 실패가 떳다. 다시 문제를 보니깐, 린턴하려는 배열이 빈 배열인 경우!즉, 가장 작은 수가 제거된 배열이 빈 배열인 경우!-1을 채워 리턴하는 문제였다... 2. 입출력 예시의 [4, 3, 2, 1]의 결과가 [4, 3, 2]여서모든 결과가 내림차순 정렬이 돼야 하는줄 알고sort((a, b)=> a - b)로 오름차순 정렬 후slice(1, arr.lenght + 1)로 가장 작은 값을 제거하고reverse()함수를 사용했다...(모든 예시가 정렬 돼 있지 않다...) 그럼! ..