JavaScript 105

프로그래머스 문자열 곱하기 JS ( repeat()- 문자열반복 )

문제 설명 문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, k) { return my_string.repeat(k) } 문자열을 반복하는 자바스크립트의 메서드가 있을것같아서 찾아보니까 repeat()이 있었다. repeat메서드는 이 문제를 풀면서 처음 접해서 공부해보았다. 메서드를 이용하면 쉽게 풀 수 있지만 for문을 이용해서도 풀 수 있다 function solution(my_string, k) { let answer = ''; for(let i = 0; i

프로그래머스 컨트롤 제트 JS (while문을 통해 findIndex()여러번 처리 / 빈배열이 호출되면 에러가 나는 reduce() )

문제 설명 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요. 🙋‍♀️ 내 생각 보고 바로 reduce를 이용해서 값을 더해야겠다는 생각이 들었다. 문제는 Z가 있으면 바로 앞의 숫자를 빼는것을 어떻게 처리할 것인가였다. 생각나는 방법은 두가지였는데, 1️⃣Z를 바로 앞의값의 -인값으로 치환 2️⃣ Z가 있으면 바로 앞의 값과 Z를제거 였다. 둘다 인덱스로 바로 앞의 값에 접근하는것은 같다. 나는 둘중에 2️⃣번방법으로 문제를 풀었다. ✅ 내 코드 funct..

프로그래머스 공백으로 구분하기 2 JS ( split(" ")의 성질 2가지 )

문제 설명 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 이 문제는 split()메서드에 대한 이해도가 있다면 금방 풀수있는 문제이다. split()이 구분자를 기준으로 문자열을 나누기 때문에, 구분을 하면서 공백을 제거할수가 있다. 하지만 이 문제를 풀면서 생각보다 split()에 여러가지 성질이 있고, 그래서 활용할때 주의해야겠다는 생각이 들었다. 문제를 해결하다보니 이런 세세한것들을 깨닫고 공부했다. mdn문서와 일일이 실험하면서 파악한 속성들을 정리한 것이기때문에 정확하지 않은 정보가 포함되어있을 수도 있다..

프로그래머스 문자열 바꿔서 찾기 JS ( 값의 대치를 위해 map()사용하기 )

문제 설명 문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요. ✅ 내 코드 function solution(myString, pat) { return myString .split("") .map((a) => (a === "A" ? "B" : "A")) .join("") .includes(pat) ? 1 : 0; } 이 문제는 A ➡️ B 로, B ➡️ A로 바꿀때 어떻게해야 A로 바뀐 B가 다시 A가 되지 않으면서 새로운 값으로 대치할 수 있는지가 핵심인것 같다. 처음에는 replace()를 생각했..

프로그래머스 특정한 문자를 대문자로 바꾸기 JS (정규식 생성자와 replace(), replaceAll() )

문제 설명 영소문자로 이루어진 문자열 my_string과 영소문자 1글자로 이루어진 문자열 alp가 매개변수로 주어질 때, my_string에서 alp에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, alp) { const reg = new RegExp(alp, 'g') return my_string.replace(reg,alp.toUpperCase()) } my_string에서 alp만 찾아서 대문자로 바꾸는 문제이다. 우선 찾아서 바꾸기 위해 replace()가 가장 먼저 떠올랐다. 이 문제에서는 고정된 값이 아닌 매개변수 alp를 자바스크립트로 표현할수 있는가가 제일 중요한 문제인..

프로그래머스 정수를 나선형으로 배치하기 JS ( Array(), Array.from(), 중첩for문, n x n 2차원배열만들기 )

문제 설명 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. ✅ 코드 function solution(n) { const result = Array.from(Array(n), () => Array(n).fill(0)); // n x n 배열 생성 let num = 1; // 시작 숫자 let row = 0; // 행의 시작 인덱스 let col = 0; // 열의 시작 인덱스 for (let i = n; i > 0; i -= 2) { // 오른쪽으로 이동 for (let j = 0; j < i; j++) { result[row][col] = num++;..

프로그래머스 배열의 길이에 따라 다른 연산하기 JS ( if문, map() / 비트 XOR (^) 연산 )

프로그래머스 배열의 길이에 따라 다른 연산하기 JS 문제 설명 정수 배열 arr과 정수 n이 매개변수로 주어집니다. arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(arr, n) { if(arr.length%2===1){ return arr.map((num,i)=> i%2===0? num+n: num) } else { return arr.map((num,i)=> i%2===1? num+n: num) } } 배열의 길이가 홀수인지 짝수인지를 if문으로 작성했다. 그리고 각각의 요소를 돌면서 특정한 행..

프로그래머스 접미사인지 확인하기 JS ( endsWith() / slice()와 length차 이용하기 )

프로그래머스 접미사인지 확인하기 JS 문제 설명 어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다. 문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, is_suffix) { return +my_string.endsWith(is_suffix) } 이 문제는 정말 빨리 풀었다. 전에 다른 문제를 풀면서 startsWith()와 endsWith()를 다뤄본적이..

프로그래머스 A 강조하기 JS ( toLowerCase(), replace() / replace의 매개변수로 함수 / 문자클래스 [ ] , [^ ] )

프로그래머스 A 강조하기 JS 문제 설명 문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요. ✅ 내 코드 function solution(myString){ return myString.toLowerCase().replace(/a/g,"A") } 처음에 보자마자 replace()가 생각났다. a를 모두 A로 바꿔야했기 때문이다. replace를 해주기전에 먼저 모든 값을 toLowerCase()를 통해서 소문자로 바꾸었다. 그러면 모든 값이 소문자일 것이다. 이중에서 a인것만 찾아서 A로 바꾸기 위해서 replace를 쓰고 그것을 전역..

프로그래머스 원하는 문자열 찾기 JS ( 정규식 생성자, .test메서드)

프로그래머스 원하는 문자열 찾기 JS 문제 설명 알파벳으로 이루어진 문자열 myString과 pat이 주어집니다. myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요. 단, 알파벳 대문자와 소문자는 구분하지 않습니다. ✅ 내 코드 function solution(myString, pat) { const regex = new RegExp(pat, "gi"); return +regex.test(myString); } 먼저 위의 문제를 읽고 대소문자가 달라도 인식을 해야하는것이 중요하다는 생각이 들었다. 그래서 정규식의 gi가 생각이 났다. g (전역): 패턴과 일치하는 모든 부분을 찾는다 (전역 플래그를 사용하지 않으면 ..