JavaScript 223

LV0 64 가까운 수

문제 - 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요. 입출력 예 array n result [3, 10, 28] 20 28 [10, 11, 12] 13 12 나만의 풀이 이 문제는 시간이 조금 걸렸다. 우선 반복문으로 array.length만큼 반복하게 한 후 if 문을 이용해 array[i] - n의 절대값들을 비교하게 만들었다. 그러기 위해선 변수로 array의 원소와 절댓값이 들어갈 변수를 선언했다. 그 후 선언되어 있는 절댓값 변수보다 새롭게 array[i] - n 절댓값이 더 작으면 선언되어 있는 두 변수에 array[i]와 array[i] - n 절대값을 넣는다. 그렇게 ..

LV0 63 이진수 더하기

제목 - 이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요. 입출력 예 bin1 bin2 result "10" "11" "101" "1001" "1111" "11000" 나만의 풀이 이 문제는 간단하게 풀었다. 2진수의 합은 10진수로 바꿔서 풀어도 값은 같다는 것을 이용해 코드를 완성했다. parseInt()를 이용해 2진수를 10진수로 바꾸고 리턴 할때 toString(2)을 이용해 2진수로 반환했다. function solution(bin1, bin2) { let answer = (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2) return answer; }

13 JS 옵셔널 체이닝 '.?'

- ?.를 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접슬 할 수 있습니다. 정보가 를 호줄 수 주소 정보가 없다면 에러가 발생하는데 그것을 막기 위해선 &&를 이용해 모든 과정의 수를 다 입력해야 한다. 예) let user = {}; // 주소 정보가 없는 사용자 alert(user.address.street); // TypeError let user = {}; // 주소 정보가 없는 사용자 alert( user && user.address && user.address.street ); // undefined, 에러가 발생하지 않음. 옵셔널 체이닝을 사용하면 이렇게 간단하게 된다. let user = {}; // 주소 정보가 없는 사용자 alert( user?.address?.stree..

JS 2022.10.25

LV0 62 팩토리얼

문제 - i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요. · i! ≤ n 입출력 예 n result 3628800 10 7 3 나만의 풀이 백토리얼은 숫자 이하의 자연수를 다 곱하는 것이니 반대로 값에서 숫자 이하의 자연수를 나누면 백토리얼 숫자가 나온다. 그래서 while문을 이용해 n이 변수보다 작을 경우 멈추게 한다. 그리고 반복문으로 변수에 1을 더하고 n에 변수를 나눈 값을 반환하면 되는데 예외로 n이 1면 2가 반환이 되기 때문에 if문으로 처음을 막은 후 for문을 돌리는 방향으로 했다. fu..

LV0 61 k의 개수

문제 - 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요. 입출력 예 i j k result 1 13 1 6 10 50 5 5 3 10 2 0 나만의 풀이 간단하게 설명하면 매개변수 k가 몇 번 나오냐다. 그래서 while문을 이용해 i 이상 j 이하의 수를 다 출력하고 문자열로 치환하여 다 합친 후 map()와 삼항 연산자를 이용해서 변수에 + 1를 하면 된다~ function solution(i, j, k) { let numArr = [] while (i a === String(k) ? answer += 1 : null)..

LV0 59 한 번만 등장한 문자

문제 - 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다. 입출력 예 s result "abcabcadc" "d" "abdc" "abcd" "hello" "eho" 나만의 풀이 엄청 고생한 문제다 ㅜㅜ 우선 문제의 특징은 값이 출력이 될 때 알파벳의 순서로 정렬되어 있다는 것을 숙지하고 가야 했다. 우선 매개변수 s에 주어지는 문자열은 배열로 만들고 중복된 글자를 제거했다. 그 후 resuce()를 이용해 객체를 만들어 존재하는 알파벳을 키로 두고 개수를 값으로 만든다. for문을 이용해 키의 값이 1과 동일하면 빈 배열에 push한..

LV0 58 모스부호 (1)

문제 - 머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 다음과 같습니다. morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-'..

LV0 57 잘라서 배열로 저장하기

문제 - 문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요. 입출력 예 my_str n result "abc1Addfggg4556b" 6 ["abc1Ad", "dfggg4", "556b"] "abcdef123" 3 ["abc", "def", "123"] 나만의 풀이 먼저 n의 길이 만큼 어떻게 하면 자를까 고민을 했다. 그래서 빈 배열을 선언하고 for문과 substring()를 이용해 인덱스 범위 안에 글만 자른 후 빈 배열에 push()하여 문제를 해결했다 for문의 반복 범위는 my_str(문자열)의 길이에 n을 나누고 ceil(올림)을 이용해 정했다. (substring()은 문자열의 인덕스 범위를..

LV0 56 A로 B 만들기

문제 - 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return 하도록 solution 함수를 완성해주세요. 입출력 예 before after result "olleh" "hello" 1 "allpe" "apple" 0 나만의 풀이 처음에는 이 문제를 어떻게 풀어야 하나 감이 안 잡힌 상태로 문제만 바라 보았다. 비교를 하는 방법이 뭐가 있을까 계속 고민하는 중 before, after 배열로 바꾼 후 sort()를 이용해 알파벳순으로 정렬하고 for문과 if문을 이용해 새롭게 선언한 배열에 같은 위치에 같은 알파벳이 존재하면 push한 후 before과 새로운 배열에 length를 비교하여 삼항 연산자를 이용해 같다면 1을..

LV0 55 중복된 문자 제거

문제 - 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return 하도록 solution 함수를 완성해주세요. 입출력 예 my_string result "people" "peol" "We are the world" "We arthwold" 나만의 풀이 이 문제를 본 순간 배열로 만들고 중복된 글자를 없에고 다시 join()으로 합치자고 생각을 했다. 우선 배열에서 중복되는 글자들을 제거하는 방법은 알고 있었어 알고 있는 데로 해보았다. function solution(my_string) { const arr = my_string.split(''); const answer = arr.filter((element, index) =..