프로그래머스 : JavaScript 알고리즘 100일 챌린지 42일차
- 프로그래머스 : https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc
- 유트브 참고 : https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
코딩 기초 트레이닝 Day42
1. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 : 문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
function solution(myString, pat) {
var answer = '';
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
myString | pat | result |
"AbCdEFG" | "dE" | "AbCdE" |
"AAAAaaaa" | "a" | "AAAAaaaa" |
답 확인하기
function solution(myString, pat) {
return myString.substring(0, myString.lastIndexOf(pat)) + pat;
}
해설 확인하기
주어진 코드는 solution이라는 함수를 정의하고, 해당 함수는 입력된 myString 문자열에서 pat 패턴 이전까지의 부분 문자열과 pat 패턴을 결합하여 반환합니다.
함수의 동작을 요약하면 다음과 같습니다:
solution 함수를 호출할 때, 두 개의 인자를 전달해야 합니다. 첫 번째 인자는 문자열이고, 두 번째 인자는 찾을 패턴입니다.
함수는 myString 문자열에서 pat 패턴 이전까지의 부분 문자열을 추출합니다. 이를 위해 substring과 lastIndexOf 함수를 사용합니다.
추출된 부분 문자열과 pat 패턴을 결합하여 반환합니다.
예를 들어, solution("Hello, World!", "o")를 호출하면 반환 값으로 "Hello, Wo"가 나올 것입니다. "o" 패턴 이전까지의 부분 문자열인 "Hello, Wo"와 "o"를 결합하여 반환되었습니다.
주의: lastIndexOf 함수는 문자열에서 마지막으로 등장하는 인덱스를 반환합니다. 따라서, pat 패턴이 여러 번 등장하는 경우, 가장 마지막에 등장한 인덱스를 기준으로 부분 문자열이 추출됩니다.
2. 문자열이 몇 번 등장하는지 세기 : 문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.
function solution(myString, pat) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
myString | pat | result |
"banana" | "ana" | 2 |
"aaaa" | "aa" | 3 |
답 확인하기
function solution(myString, pat) {
return [...myString].reduce((acc, cur, idx) => {
const curStr = myString.slice(idx, pat.length+idx)
if(curStr === pat) return acc+1
return acc
}, 0)
}
해설 확인하기
주어진 코드는 solution이라는 함수를 정의하고, 해당 함수는 입력된 myString 문자열에서 pat 패턴이 등장하는 횟수를 반환합니다.
함수의 동작을 요약하면 다음과 같습니다:
solution 함수를 호출할 때, 두 개의 인자를 전달해야 합니다. 첫 번째 인자는 문자열이고, 두 번째 인자는 찾을 패턴입니다.
함수는 myString 문자열을 배열로 변환한 뒤, reduce 함수를 사용하여 각 문자에 대해 반복문을 실행합니다.
반복문 내에서 현재 인덱스(idx)부터 pat.length 길이까지의 부분 문자열(curStr)을 추출합니다.
추출한 부분 문자열이 pat과 일치하는 경우, 누적값(acc)에 1을 더합니다.
반복문이 완료되면 최종적인 누적값을 반환합니다.
예를 들어, solution("Hello, World!", "o")를 호출하면 반환 값으로 2가 나올 것입니다. "o" 패턴이 "Hello, World!" 문자열에서 두 번 등장하기 때문입니다.
주의: 해당 코드는 패턴이 중복해서 등장하는 경우, 중복되는 패턴마다 개수를 세는 것이 아니라, 연속으로 등장한 패턴만을 카운트합니다. 예를 들어, solution("ababa", "aba")를 호출하면 반환 값은 1이 됩니다. "aba" 패턴이 중복해서 등장하지만, 연속으로 등장한 패턴만을 카운트하기 때문입니다..
3. ad 제거하기 : 문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
function solution(strArr) {
var answer = [];
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
strArr | result |
["and", "notad", "abcd"] | ["and", "abcd"] |
["there", "are", "no", "a", "ds"] | ["there", "are", "no", "a", "ds"] |
답 확인하기
function solution(strArr) {
return strArr.filter(a => !a.includes('ad'))
}
해설 확인하기
주어진 코드는 solution이라는 함수를 정의하고, 해당 함수는 문자열 배열 strArr에서 'ad'를 포함하지 않는 요소들로 이루어진 배열을 반환합니다.
함수의 동작을 요약하면 다음과 같습니다:
solution 함수를 호출할 때, 문자열 배열을 인자로 전달해야 합니다.
함수는 배열의 각 요소를 확인하여, 'ad'를 포함하지 않는 요소들로 필터링합니다. (filter 함수를 사용하여 수행)
필터링된 요소들로 이루어진 새로운 배열을 반환합니다.
예를 들어, solution(["Hello", "World", "ad", "Goodbye"])를 호출하면 반환 값으로 ["Hello", "World", "Goodbye"]가 나올 것입니다. 'ad'를 포함하는 "ad"는 필터링되어 결과 배열에서 제외됩니다.
주의: 주어진 코드에서는 'ad'가 완전히 일치하는지를 확인하고 있으며, 대소문자 구분을 합니다. 따라서, 'Ad', 'AD', 'aD'와 같이 대소문자가 다른 경우는 필터링에서 제외되지 않습니다..
4. 공백으로 구분하기1 : 단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string) {
var answer = [];
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
myString | result |
"i love you" | ["i", "love", "you"] |
"programmers" | ["programmers"] |
답 확인하기
function solution(my_string) {
let answer = [];
answer = my_string.split(" ");
return answer;
}
해설 확인하기
주어진 코드는 solution이라는 함수를 정의하고, 해당 함수는 입력된 my_string 문자열을 공백을 기준으로 분리하여 문자열 배열로 반환합니다.
함수의 동작을 요약하면 다음과 같습니다:
solution 함수를 호출할 때, 문자열을 인자로 전달해야 합니다.
함수는 my_string 문자열을 split 함수를 사용하여 공백을 기준으로 분리합니다.
분리된 각 부분 문자열로 이루어진 배열을 반환합니다.
예를 들어, solution("Hello, World!")를 호출하면 반환 값으로 ["Hello,", "World!"]가 나올 것입니다. 문자열이 공백을 기준으로 두 개의 부분으로 분리되었으며, 분리된 각 부분 문자열이 배열의 요소로 반환되었습니다.
주의: 주어진 코드에서는 공백을 기준으로 문자열을 분리하고 있습니다. 분리된 부분 문자열은 공백을 포함할 수 있으며, 공백 앞뒤에 있는 문자열이 각각 배열의 요소로 포함됩니다.
5. 공백으로 구분하기2 : 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string) {
var answer = [];
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
my_string | return |
"i love you" | ["i", "love", "you"] |
" programmers" | ["programmers"] |
답 확인하기
function solution(my_string) {
let answer = [];
let my_string_list = my_string.split(" ");
for (let i = 0; i < my_string_list.length; i++) {
if (my_string_list[i] !== "") {
answer.push(my_string_list[i]);
}
}
return answer;
}
해설 확인하기
주어진 코드는 solution이라는 함수를 정의하고, 해당 함수는 입력된 my_string 문자열을 공백을 기준으로 분리하여 문자열 배열로 반환합니다. 단, 빈 문자열은 제외합니다.
함수의 동작을 요약하면 다음과 같습니다:
solution 함수를 호출할 때, 문자열을 인자로 전달해야 합니다.
answer라는 빈 배열을 생성합니다.
my_string 문자열을 split 함수를 사용하여 공백을 기준으로 분리한 결과를 my_string_list 배열에 저장합니다.
my_string_list 배열을 순회하면서 각 요소를 확인합니다. 요소가 빈 문자열이 아닌 경우, answer 배열에 추가합니다.
최종적으로 answer 배열을 반환합니다.
예를 들어, solution("Hello, World!")를 호출하면 반환 값으로 ["Hello,", "World!"]가 나올 것입니다. 문자열이 공백을 기준으로 두 개의 부분으로 분리되었으며, 분리된 각 부분 문자열이 배열의 요소로 반환되었습니다. 빈 문자열은 제외되었습니다.