문제 풀기/JavaScripts 67

문제 27. 핸드폰 번호 가리기(repleat, slice)

문자열의 일부를 변경하면 되는 문제라 replace 함수를 알아 봤지만, 어떻게 문제처럼 변경을 해야할지 모르겠어서 사용하지 못 했다. 다른 사람들의 코드를 보니function hide_numbers(s){ return s.replace(/\d(?=\d{4})/g, "*");}으로 변경이 가능했다... 아직까지 어떻게 바뀌는건지 정확하게는 잘 모르겠다... 다른 예시로는function hide_numbers(s){ var result = "*".repeat(s.length - 4) + s.slice(-4); return result; }"문자".repeat()로 문자를 반복 출력하고, s.slice()함수로 표현할 부분만 출력해준 것을 확인했다. slice 함수 사용법은 slice(시작 ..

문제 26. 음양 더하기(reduce 복습)

처음에 문제를 보고 reduce 함수를 사용하면 반복문 없이 간단하게 문제가 해결될거라 생각했다.그렇게 작성한 코드 return absolutes.reduce((acc, cur, index)=> acc + (cur * (signs[index] ? 1 : -1)))은 원하는 결과와 다르게 출력 됐다. 알고보니, reduce 사용법을 제대로 숙지하지 않아서 발생한 오류인데 reduce는 (calback(acc, cur, index, array), initialValue) 형태로 사용되며, (아래부터 중요)1. calback에서 사용되는 매개변수에는 acc : 누산 값cur : 현재 값index : 현재 주소array : reduce에 사용되는 주소 2. initialValue는 초기설정 값 이었다. ini..

문제 25. 나누어 떨어지는 숫자(배열 filter 함수)

find, findeIndex에서 find 함수와 유사하지만, 배열이 존재할 때 find는 찾고자 하는 배열의 가장 앞의 값만을 리턴해준다.여러 값을 반환하고 싶다면 filter 함수를 사용해야 한다. filter 함수의 매개변수로는 find, findIndex와 마찬가지로 element : 현재 배열 안 요소index : 현재 배열 요소 indexarray : 현재 filter의 배열 이 있다. 제출한 코드 : function solution(arr, divisor) { let answer = arr.filter((element) => element % divisor == 0); return answer.length == 0 ? [-1] : answer.sort((a,b)=> a -..

문제 24. 서울에서 김서방 찾기(배열 Find, FindIndex)

반복문으로 배열에서 찾고자 하는 값을 구할 수 있지만,반복문 없이 풀기 위해서는 관련 함수를 찾아보는 것이 가장 좋다.찾아본 결과 find, findIndex가 존재했다. find는 찾고자 하는 값 유무를 바탕으로 존재하면 값을, 없으면 "undefined"를 반환한다.findIndex는 찾고자 하는 값 유무를 바탕으로 존재하면 IndexNumber를 없으면 -1을 반환한다. 둘 다 매개변수로 (element, index, array)를 사용하는데 element : 배열의 요소index : 배열의 indexarray : find를 호출한 배열 이다. 제출한 코드 : function solution(seoul) { return "김서방은 "+seoul.findIndex((element)=> e..

문제 22. 두 정수 사이의 합(다른 사람 풀이 가우스 덧셈 공식)

if문을 통한 Swap 알고리즘과 for문을 이용한 반복문을 사용하지 않고 결과를 도출하고 싶었지만 알고리즘이생각나지 않아 결국 if문과 for문을 사용하게 됐다... 다른 사람의 코드를 보니깐function adder(a, b){ var result = 0 //함수를 완성하세요 return (a+b) * (Math.abs(a-b)+1) / 2;} 가우스의 덧셈 공식을 이용해서 빠르게 문제를 푸는 걸 확인했다. 1. a + b를 구한다.2. Math.abs(a-b) + 1로 a와 b 사이 개수를 구한다.3. 첫 번째 단계의 결과와 두 번째 단계의 결과를 곱한 후, 2로 나눕니다. 제출한 코드 : function solution(a, b) { if(a > b) { ..

문제 20. (중요)정수 내림차순으로 배치하기(정수 sort 함수)

정수의 각 자릿수에서 큰 것부터 작은 순으로 정렬해야 하는데정수 한 덩어리로 큰 것과 작은 것을 비교할려면반복문을 사용해서 나누기와 나머지 연산을 수행한 후하나하나 비교를 해야하는 번거로움이 발생한다. 그래서 먼저 문자열로 변환하고, split('')로 문자열 덩어리를 문자 배열로 변환해주었다.그 후 sort((a,b) => b-a)함수로 내림차순 정렬을 수행했다. ( 원래는 내림차순 정렬 이전에 map(Number)로 문자들을 정수로 변환시켜 주고 sort()를 시켜주었는데, map(Number)을 지운 배열의 문자들을 기준으로도 내림차순 정렬이 가능했다.) 그 후 reduce((acc, cur)=> acc + cur)로 문자들을 문자열로 붙여주고 붙인 문자열을 parseInt()로 ..

문제 18. 문자열을 정수로 바꾸기

처음에는 숫자 앞에 +, - 기호가 있어 parseInt()를 사용 했을 경우 기호로 인해 문제가 발생 하는 것 아닌가?라는 생각이 들었다. 하지만, 사용해 본 결과 아무 문제 없이 문자열을 정수로 변환시켜 주었다.생각해보면 정수에는 기호를 필요로 하는 음수 값이 존재하기 때문에당연하게 변환이 이뤄져야 하는 함수였다... 제출한 코드 : function solution(s) { return parseInt(s); }