JavaScript/알고리즘 90

프로그래머스 정수를 나선형으로 배치하기 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 (전역): 패턴과 일치하는 모든 부분을 찾는다 (전역 플래그를 사용하지 않으면 ..

프로그래머스 n개 간격의 원소들 JS (for문, push() / _(언더스코어) 사용하지 않는 매개변수나타냄 )

프로그래머스 n개 간격의 원소들 JS 문제 설명 정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(num_list, n) { let list =[] for(let i=0; i index % n === 0); } 이 코드의 2️⃣ 인덱스를 2로 나눠서 0이 되는지를 확인하는 방법을 사용했다. 그러면서 for문 대신 filter를 이용해서 필요한 값만을 뽑아냈다. filter()의 인덱스만을 이용해도 되기 때문에, 첫번째 인자로 _ (언더스코어)를 사용했다. 해당 매개변수를 사용하지 않을때는 언더스..

프로그래머스 옹알이 (1) JS ( replaceAll() / RegExp 정규표현식 공부 )

프로그래머스 옹알이 (1) JS 문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(babbling) { return babbling.map(word => word.replaceAll(/aya|ye|woo|ma/gi, '')).filter(a => a ==='').length } 위의 방법을 생각하고 완성하기 전에 여러가지 방법을 시도했는데 다 안돼서 계속..

프로그래머스 꼬리 문자열 JS ( filter(), includes(),join() / reduce를 사용해서 요소삭제, 문자열 이어붙이기)

프로그래머스 꼬리 문자열 JS 문제 설명 문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다. 문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(str_list, ex) { return str_list.filter(a => !a.i..

프로그래머스 접두사인지 확인하기 JS ( startsWith() / +연산자로 Boolean값 숫자로 변환 / indexOf() )

프로그래머스 접두사인지 확인하기 JS 문제 설명 어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다. 문자열 my_string과 is_prefix가 주어질 때, is_prefix가 my_string의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요. ✅ 내 코드 function solution(my_string, is_prefix) { if (my_string.startsWith(is_prefix)) { return 1; } else { return 0; } } 🙋‍♀️ 내 생각 처음에 문제를 잘못읽어서 조금 헤맸다 ..ㅠ..

프로그래머스 배열에서 문자열 대소문자 변환하기 JS (map(),for문,if문,toUpperCase(),toLowerCase() / reduce() -초기값으로 빈배열사용 )

프로그래머스 배열에서 문자열 대소문자 변환하기 문제 설명 문자열 배열 strArr가 주어집니다. 모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요. ✅ 내 코드 방법1> map()사용하여 원본유지 function solution (strArr) { return strArr.map((str, i) => { if(i%2 ===0) { return str.toLowerCase() } else { return str.toUpperCase() } }) } toLowerCase()와 toUpperCase()는 전에 여러번 써본 기억이 있어서 바로 strArr에 ..