1. 배열 만들기 5
[문제 설명]
문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
[답변]
function solution(intStrs, k, s, l) {
let answer = [];
intStrs.forEach((str) => {
answer.push(Number(str.substring(s, s + l)));
});
return answer.filter((num) => num > k);
}
💡 map을 사용해서 풀어보려다가 이해도가 부족해서 실패하고 방법을 찾아보았고, substring을 활용해 풀어보았음...
📌 substring() 과 substr()의 차이점
1. substring()
- 시작 인덱스와 끝 인덱스를 인자로 받는다.
- 첫번째 인자 = 시작 인덱스, 두번째 인자 = 추출하고자 하는 문자열의 끝 인덱스
- 두번째 인자를 생략하면 인덱스부터 끝까지 추출
- 음수 사용 불가, 음수가 들어오면 0으로 처리
2. substr()
- 시작 인덱스와 추출할 길이를 받는다.
- 첫번째 인자 = 시작 인덱스, 두번째 인자 = 추출할 길이
- 음수 사용 가능
[다른 답변]
function solution(intStrs, k, s, l) {
return intStrs.map((v) => +v.slice(s, s + l)).filter((v) => v > k);
}
💡 map으로 이렇게 간단하게 풀 수 있었다! 더 공부하자.
2. 부분 문자열 이어 붙여 문자열 만들기
길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
[답변]
function solution(my_strings, parts) {
return my_strings.map((v, i) => [...v].slice(parts[i][0], parts[i][1]+1).join('')).join('');
}
💡 전 문제처럼 map()
으로 풀어봤다. forEach.. reduce.. 고민하느라 좀 걸렸다!
3. 문자열 뒤의 n글자
[문제 설명]
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.
[답변]
function solution(my_string, n) {
return my_string.substr(my_string.length-n);
}
💡 배열로 바꾸고 어쩌고 저쩌고 해봤지만, 다시 다 지우고 생각해보니 이렇게 간단했다. 방금 공부했던 substr()
을 사용하여, 원하는 뒤 n글자 return 해주기
4. 접미사 배열
[문제 설명]
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
[답변]
function solution(my_string) {
let answer = [];
for(let i = 1; i <= my_string.length; i++){
answer.push(my_string.substr(my_string.length-i));
}
return answer.sort();
}
💡 answer 배열을 생성하고, substr()
을 사용하여 my_string의 뒷 글자부터 한 글자 씩 ++하며 answer에 push 해줬다.
그리고 sort()
를 활용해 정렬해준 값을 return
5. 접미사인지 확인하기
[문제 설명]
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "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) {
let arr = [];
for(let i = 1; i <= my_string.length; i++){
arr.push(my_string.substr(my_string.length-i));
}
return arr.includes(is_suffix) ? 1 : 0;
}
💡 위의 문제를 응용하여 모든 접미사를 arr 배열에 넣고, inclues()
를 활용하여 in_suffix가 arr 안에 있는 지 확인하여 삼항연산자로 return
[다른 답변]
const solution = (str, suff) => str.endsWith(suff) ? 1 : 0
💡 당황스러운 답변. 메서드를 많이 알면 정말 빠르게 해결할 수 있구나 느꼈다.
📌 endsWith()
: 문자열이 특정 문자열 또는 문자로 끝나는지를 확인하는 데 사용되는 문자열 메서드. boolean값 반환
'프로그래머스 > Lv. 0 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 Day 11 / JS (0) | 2023.07.30 |
---|---|
[프로그래머스] 코딩 기초 트레이닝 Day 10 / JS (0) | 2023.07.29 |
[프로그래머스] 코딩 기초 트레이닝 Day 8 / 주사위게임 3 / JS (0) | 2023.07.27 |
[프로그래머스] 코딩 기초 트레이닝 Day 7 / JS (0) | 2023.07.26 |
[프로그래머스] 코딩 기초 트레이닝 Day 6 / JS (0) | 2023.07.25 |