JavaScript/알고리즘 90

프로그래머스 문자열 정수의 합 JS ( map(), reduce() )

문제 설명 한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(num_str) { return [...num_str].map(Number).reduce((a,b) => a+b, 0) } 🙋‍♀️ 내 생각 문제를 보자마자 바로 reduce가 생각났다. reduce는 배열에 사용하는 것이기 때문에 일단은 문자열을 배열로 바꿔주는것을 하였다. 내가 문자열을 배열로 바꿀때 사용하는 2가지 방법이 있다. (다른 방법들도 있을수 있음 ㅎㅎ 내가 자주쓰는 방법!!) 1. [...] 2. split("") 이 2가지 방법을 이용하면 문자열을 배열로 바꿀 수 있다. 물론 단순히 문자열을 배열로만..

프로그래머스 글자 이어 붙여 문자열 만들기 JS ( map(),join() )

문제 설명 문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, index_list) { const newList =[] index_list.map(a => newList.push(my_string[a])) return newList.join("") } 🙋‍♀️ 내 생각 배열의 각각의 값들을 인덱스로 이용해야 하기 때문에 문제를 보자마자 바로 map()을 떠올렸다. 그래서 map()을 통해 배열을 돌면서 그 값들을 인덱스로 받아오는 작업을 해야겠다고 생..

프로그래머스 공백으로 구분하기1 JS ( split() )

문제설명 단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string) { return my_string.split(" ") } 💻 내가 이용한 메서드 split(): String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다. String.split() split() split(separator) split(separator, limit) seperator를 인자로해서 어느지점을 기준으로 나눌지를 정할수있다. 또한 limit을 통해서 개수도 제한할 수 있다. 반환값: 주어진 문..

프로그래머스 부분 문자열 JS ( includes() )

문제설명 어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다. 예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다. 문자열 str1과 str2가 주어질 때, str1이 str2의 부분 문자열이라면 1을 부분 문자열이 아니라면 0을 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(str1, str2) { if (str2.includes(str1)) { return 1; } else { return 0; } } 🙋‍♀️ 내 생각 문제를 보자마자 includes메서드를 사용하면 쉽게 풀수있을것 같았는데 String에도 includes를 사용할 수 있나, 아니면 Array에만 사용할 수 있나 조금 헷갈려서 찾아보..

프로그래머스 마지막 두원소 JS ( if문 / reverse(), const )

문제설명 정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요 ✅ 내 코드 function solution(num_list) { let last =num_list[num_list.length-1] let last2 = num_list[num_list.length-2] if(last > last2) { num_list.push(last-last2) } else { num_list.push(last*2) } return num_list } 🙋‍♀️ 내 생각 배열의 인덱스를 이용해서 문제를 풀어야겠다고 생각했다. 배열은..

프로그래머스 n번째 원소까지 JS ( slice() )

문제설명 정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(num_list, n) { return num_list.slice(0,n) } 💻 내가 사용한 방법 slice(): 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환 Array.slice() arr.slice([begin[, end]]) ⭐️ ⭐️ 1. string.slice() 도 가능함!! 2. end 미포함!! ⭐️ ⭐️ 🙋‍♀️ 내 생각 slice()에 두개의 인자를 넣으면 시작지점부터 끝나는 지점을 지..

프로그래머스 문자열의 뒤의 n글자 JS ( push(),for문,join() / slice() )

문제설명 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, n) { let list = [...my_string] let list2 =[] let idx = list.length-n for (let i =idx; i my_string.slice(my_string.length - n) 문제를 다 풀고 제출하고나서 보니, 다른 사람들을 slice메서드를 이용해서 엄청 쉽게 풀었다... ㅎㅎㅎㅎㅎ 나도 slice메서드를 알고 있었는 왜 생각이 안났던걸까 ㅋㅋㅋ 이 문제는 사실 slice()만 알면 엄청 쉽게 풀수있는 문제이다. ..

프로그래머스 n보다 커질 때까지 더하기 JS ( for문 / while문 )

문제설명 정수 배열 numbers와 정수 n이 매개변수로 주어집니다. numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(numbers, n) { let sum = 0; for (let i = 0; i n) { return sum; } } } 💻 내가 사용한 방법 for문: 어떤 특정한 조건이 거짓으로 판별될 때까지 반복 for ([초기문]; [조건문]; [증감문]) 문장 1. 초기문: 보통 1로 설정. 복잡한구문 / 변수도 가능 2. 조건문: 조건문이..

프로그래머스 카운트업 JS ( for문 , Push() / Array(), fill(), map() )

문제설명 정수 start와 end가 주어질 때, start부터 end까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(start, end) { let list =[] let num; for (num=start; num x+idx); } 나는 기본적인 for문을 이용해서 문제를 풀었는데, 이렇게 여러 매서드를 이용해서 풀어도 좋을것같아서 학습하였다. Array생성자를 길이를 지정한 배열을 생성하고, 그 배열의 값들을 모두 start값으로 채운 다음 map으로 배열을 돌면서 인덱스값만큼 더해주는 코드이다. 인덱스는 0부터 시작되기때문에 start부터 end까지 원하는 값을 얻을 수 있다. 💻 학습한 것 1. Array() ..