JavaScript 105

프로그래머스 세로읽기 JS ( 가로 m글자씩, 세로 c번째 적힌값찾기 )

문제 설명 문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 가로로 m글자씩 적고, 세로의 c번째값들만 추출해서 하나의 문자열을 만드는 것이 목표이다. 위의 첫번째예시를 기준으로 예를 들어서 이해한 것을 정리하면, 4글자씩 가로로 적고 2열의 값들만 추출한다. (결과값: "happy") 규칙을 찾아보면, 인덱스는 m만큼씩 차이가 난다 (h와 a의 인덱스는 m만큼 차이난다. a와 p도, p와 p도, p와 y도 m만큼의 차이이다.) 인덱스가 일정하게 증가하는 규칙을 이용해서 풀어보았다. ✅ 내 코드 function s..

프로그래머스 문자열 잘라서 정렬하기 JS (split()의 구분자가 문자열 끝에 위치한다면? / match()의 특징 )

문제 설명 문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 빈 문자열은 반환할 배열에 넣지 않습니다. 🙋‍♀️ 내 생각 인자를 기준으로 문자열을 잘라서 배열로 반환하는 split(), 정렬을 위해 사용하는 sort(), 배열을 돌면서 원하는 값만을 구할 수 있는 filter()를 알고 있다면 간단하게 풀 수 있는 문제이다. 자바스크립트에서 주로 사용하는 메서드들에 익숙하면 금방 풀 수있는 문제이다. 그래서 어렵지 않게 풀었지만 학습한 것이 있어서 블로그에 기록하게 되었다. ✅ 내 코드 function solution(myString) { return myString.spli..

프로그래머스 부분 문자열 이어 붙여 문자열 만들기 JS ( 배열의 index로 2개의 배열매칭, 중첩배열에서 값추출 )

문제 설명 길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 이 문제는 배열을 이용해서 부분문자열을 만들어서 이어붙이는 문제이다. 각각 다른 값이 들어있는 배열을 매개변수로 이용하고(my_strings/parts), 인덱스i를 통해서 원하는 범위를 지정하여 얼마큼 반복할지를 정한다. my_string은 문자열값을, parts는 s,e를 숫자로 담고 있고 이 2개가 만..

프로그래머스 문자열 섞기 JS ( 복합할당 연산자 += )

문제 설명 길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 짧은 문제의 길이만큼 해결이 어려운 문제는 아니었지만, 공부할 점이 있어서 기록해둔다. 처음 문제를 보자마자 생각난 해결법은 2가지였다. 1️⃣ 문자열로 각각 돌면서 더하기(+) 2️⃣ 배열을 만들고 돌면서 push하기 나는 1️⃣번 방법으로 풀었다. 둘다 result를 먼저 선언하고, 초기값을 지정한 다음에 for문을 도는 기본방식을 동일하다. ✅ 내 코드 function solution(str1, str2) { let result ='' for(i=0; i

프로그래머스 l로 만들기 JS (replaceAll() / for of문 )

문제 설명 알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 처음에는 인덱스를 통해서 접근하다가 갑자기 replaceAll()이 번쩍 떠올랐다. replaceAll()과 정규식을 이용하면 어렵지 않게 풀 수 있는 문제이다. ✅ 내 코드 function solution(myString) { return myString.replaceAll(/[a-k]/g,'l') } replaceAll()은 String에서 원하는 모든값을 찾아서 특정한 값으로 변환할 수 있는 메서드이다. (찾아서 새롭게 바꾸고 싶은값, 새롭게 바뀔 값)을 인자로 넣어준다. 이 문제에서..

프로그래머스 간단한 식 계산하기 JS ("연산자"처리하기, if문/switch문/객체 이용하기, eval()은 ❌)

문제 설명 문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 이 문제의 핵심은 가운데 위치하고 있는 연산자를 어떻게 처리할 것인가라고 생각했다. 공백을 기준으로 하여 각각의 값을 구분하고 나누는것은 어렵지 않은데, 연산자도 문자열로 바뀌기때문에 string타입의 연산자를 어떻게해야 연산의 기능을 수행하도록 만들것인가를 생각하는 문제이다. split(' ')을 통해서 공백을 기준으로 값을 구분하고, 배열에 담으면 아래와 같이 나온다. 숫자는 String을 Number타입으로 변환해..

프로그래머스 배열 만들기 2 JS ( /^[패턴]+$/, 정규식으로 숫자를 찾으려면 String으로 타입변환 )

문제 설명 정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다. 🙋‍♀️ 내 생각 0과 5로만 이루어진 정수를 어떻게 찾을것인가가 이 문제의 핵심이라고 생각했다. 5와 0이 들어가더라도 그 외의 값을 포함하고 있으면 안되기 때문에 그것을 어떤식으로 검사할 것인지가 중요한 것같다. 나는 정규식을 이용해서 찾을값을 지정하여 문제를 해결했다. ✅ 내 코드 function solution(l, r) { const result = []; for (let i = l; i

프로그래머스 0떼기 JS ( /^0/.test()-0으로 시작하는지? / slice(1)로 맨앞하나만제거 / number는 맨앞의 0이 JS 제거되는 특징 )

문제 설명 정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요. 🙋‍♀️ 내생각 보자마자 startsWith()가 생각이 났었지만, 0이 여러번 나올경우를 처리하는것이 어려워서 다른 방법을 생각하게 되었다. startsWith()는 정확히 일치하는 문자열이나 패턴으로 시작하기 때문에 이 문제를 풀기위해서 적절한 메서드는 아니었다. 그래서 그 다음으로 생각한 방법은 그럼 정규식을 이용해서 0이 몇개라도 상관없게만드는 것이었다. ✅ 내 코드 function solution(n_str) { while (/^0/.test(n_str)) { n_str = n_str.slice(1); } return n..

프로그래머스 홀수vs짝수 JS (reduce() / map()을 통해서 바로 합구하기)

문제 설명 정수 리스트 num_list가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다. ✅ 내 코드 function solution(num_list) { const even =[] const odd =[] num_list.map((num,i)=>i%2===0?odd.push(num):even.push(num)) const evenSum = even.reduce((acc,cur)=>acc+cur) const oddSum =odd.reduce((acc,cur)=>acc+cur) return Math.max(evenSum,oddSum)..

프로그래머스 배열 비교하기 JS ( if문,reduce() )

문제 설명 이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다. 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다. 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다 두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(arr1, arr2) { const arr1Sum = arr1.reduce((acc, cur) => acc + cur, 0); const arr2Sum = arr2.reduce((acc, cur) => ..