JavaScript 223

09 JS 참조에 의한 객체 복사

- 객체는 '참조에 의해' 저장되고 복사가 된다. 즉 객체는 그대로 저장되는 것이 아니라, 객체가 저장되어있는 '메모리 주소'인 객체에 대한 '참조 값'이 저장된다. 예) let a = {}; let b = a; // 참조에 의한 복사 alert( a == b ); // true, 두 변수는 같은 객체를 참조합니다. alert( a === b ); // true let a = {}; let b = {}; // 독립된 두 객체 alert( a == b ); // false 객체 복사, 병합과 Object.assign - js에선 객체를 복제하는 일이 드물어 내장 함수가 존재하지 않습니다. 하지만 정말 복제가 필요한 상황이라면 새로운 객체를 만든 다음 기존 객체의 프로퍼티들을 순회해 원시 수준까지 프로퍼티를..

JS 2022.10.17

LV0 35 문자열 정렬하기 (1)

문제 - 문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요. 입출력 예 my_string result "hi12392" [1, 2, 2, 3, 9] "p2o4i8gj2" [2, 2, 4, 8] "abcde0" [0] 나만의 풀이 이 문제는 문자를 replace()를 이용해 알파벳을 제거하고 배열로 반환한다. 배열로 반환하면 숫자들이 다 문자열로 되기 때문에 우선 오름 차순으로 정렬하고 map(Number)을 이용해서 배열 안 요소들을 전부 숫자로 바꾸고 배열 값을 리턴했다. function solution(my_string) { const nums = Array.from(my_stri..

LV0 34 중앙값 구하기

제목 - 중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요. 입출력 예 array result [1, 2, 7, 10, 11] 7 [9, -1, 0] 0 나만의 풀이 이 문제는 배열의 중앙값을 출력하는 것인데 배열의 길이는 홀수로 주어진다는 조건이 있다. 우선 배열을 오름 차순이나 내림 차순으로 재 정열한 뒤 배열 중앙에 올 원소를 출력한다. 출력하기 위해선 위치를 알아야 하므로 배열의 '길이 / 2'한 뒤 소수점을 버리면 된다. function solution(array) { const ..

LV0 33 배열의 유사도

문제 - 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return 하도록 solution 함수를 완성해주세요. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"] 0 나만의 풀이 이번 문제는 생각을 많이 한 것 같다. 왠지 두 배열을 비교해서 동일한 요소가 몇 개 있는지 검색을 하면 다양한 내장 함소로 할 수 있을 것 같았으나 지금 Tstory의 글들을 보지 못해 for문, if문, ?문 만 이용해서 풀어보았다. 우선 for문 안에 for문 넣고 또 안에 if문을 넣기에는 너무 무거워 보여서 s1과 s2의 배열 안에 원소의 계수를 비교..

LV0 31 문자열 안에 문자열

제목 - 문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요. 입출력 예 str1 str2 result "ab6CDE443fgh22iJKlmn1o" "6CD" 1 "ppprrrogrammers" "pppp" 2 나만의 풀이 먼저 생각한 것은 str1안에 str2를 어떻게 찾아내냐 였다. 그런데 이번 문제는 찾기 보다는 그것이 있으면 1이고 없으면 2라는 것에 집중해서 문제를 풀었다. split() 내장 함수 매개변수로 str2를 주면 str2의 기준으로 단어를 나누어 배열로 만들것이다. 만약 str1에 str2의 단어가 존재한다면 str1은 요소 2개 이상을 가진 배열이 될 것이고 아니면 요소 1개를 ..

LV0 30 삼각형의 완성 조건 (1)

문제 - 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return 하도록 solution 함수를 완성해주세요. 입출력 예 sides result [1, 2, 3] 2 [3, 6, 2] 2 [199, 72, 222} 1 나만의 풀이 이 문제는 가장 긴 한 변의 길이보다 남은 두 변의 길이의 합이 길면 삼각형이 되므로 1을, 같거나 두 변이 짧으면 삼각형이 안 되므로 2를 리턴하면 된다. 그래서 배열을 sort()를 이용해 내림차순으로 정렬을 하고 0, 1번째를 더한 후 2보다 ..

LV0 29 특정 문자 제거하기

문제 - 문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return 하도록 solution 함수를 완성해주세요. 입출력 예 my_string letter result "abcdef" "f" "abcde "BCBdbe" "B" "Cdbe" 나만의 풀이 문제를 본 후 나의 생각은 문자열에서 특정 글자를 없애는 replace() 내장 함수를 이용해 문자열 길이만큼 반목하여 없애는 방식으로 생각을 하고 풀었다. function solution(my_string, letter) { let answer = my_string for (let i = 0; i < my_string.length; i++) { answer = answer.repla..

LV0 28 모음 제거

문제 - 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return 하도록 solution 함수를 완성해주세요. 입출력 예 my_string result "bus" "bs" "nice to meet you" "nc t mt y" 나만의 풀이 이번 문제는 문자에서 글자를 뺄 수 있는 내장 함수 replace()를 이용해 문제를 해결하였다. ()안에 한 글자만 들어가지만 []을 이용하면 더 만든 글자들을 제거할 수 있으면 //g를 이용해 해당하는 모든 글자를 지워 주었다. function solution(my_string) { const answer = my_string.replace(/[aeiou]/g, '..

LV0 27 점의 위치 구하기

문제 - 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다. x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다. x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다. x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다. x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다. x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요. 입출력 예 dot result [2, 4] 1 [-7, 9] 2 나만의 풀이 dot 매개변수에 주어지는 배열을 숫자들이 음수 인지 양수 인..

LV0 26 문자 반복 출력하기

문제 - 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요. 입출력 예 my_string n result "hello" 3 "hhheeellllllooo" 나만의 풀이 반복문을 이용해서 문제를 풀었다. my_string 매개변수를 for문을 이용해 배열로 분리하고 다시 for문을 이용해 매개변수 n만큼 배열에 넣은 후 join을 이용해 다시 문자열로 바꿔서 문제를 풀어보았다. 다른 분들은 map을 이용해서 풀이를 한 것을 볼 수 있었다. (빨리 공부해야겠다 ㅜㅜ) function solution(my_string, n) { let arr = []; for (let i = 0; ..