Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- sql like연산자
- 코딩 어?
- 레디스 확인
- Robo3T 글씨체 변경
- ubuntu타임존
- 가상컴퓨터마법사
- findIndex()
- 배열을 객체로
- 객체의키값만 찾기
- 리엑트블로거
- 우분투 시간 변경
- 5.3.8 Modifying Queries
- lastIndexOf()
- 객체의 밸류값만 찾기
- 객체를 배열로
- 시퀄 문법
- 스프링 데이타 JPA
- search()
- js 문자열을 문자배열로
- sql 문자열 패턴 검색
- Robo3T 폰트변경
- 깃 토큰 만료
- 문자열 인터폴레이션
- Robo3T 글씨키우기
- @Moditying @Query
- ...점점점문법
- Robo3T 폰트 키우기
- 프론트엔드 스쿨
- indexOf()
- ${변수}
Archives
- Today
- Total
코딩기록
string) 글자 이어 붙여 문자열 만들기 / map-인자.하나일땐 배열 요소, reduec-인자.두개일땐, 누적값과 배열요소. / 배열 중복 값 제거 본문
프론트/JS)코딩테스트
string) 글자 이어 붙여 문자열 만들기 / map-인자.하나일땐 배열 요소, reduec-인자.두개일땐, 누적값과 배열요소. / 배열 중복 값 제거
뽀짝코딩 2024. 8. 12. 00:47728x90
문제 설명
문자열 str과 정수 배열 indices가 매개변수로 주어집니다. str의 indices의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ str의 길이 ≤ 1,000
- str의 원소는 영소문자로 이루어져 있습니다.
- 1 ≤ indices의 길이 ≤ 1,000
- 0 ≤ indices의 원소 < str의 길이
입출력 예
str
|
indices
|
result
|
"cvsgiorszzzmrpaqpe"
|
[16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7]
|
"programmers"
|
"zpiaz"
|
[1, 2, 0, 0, 3]
|
"pizza"
|
입출력 예 설명
- 입출력 예 #1
- 예제 1번의 str에서 인덱스 3, 5, 6, 11, 12, 14, 16, 17에 해당하는 글자는 각각 g, o, r, m, r, a, p, e이므로 str에서 indices에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, r, o, g, r, a, m, m, e, r, s입니다. 따라서 "programmers"를 return 합니다.
- 예제 2번의 str에서 인덱스 0, 1, 2, 3에 해당하는 글자는 각각 z, p, i, a이므로 str에서 indices에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, i, z, z, a입니다. 따라서 "pizza"를 return 합니다.
const solution = (str, indices) => {
// do something
};
console.log(solution('cvsgiorszzzmrpaqpe', [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7]));
// 'programmers'
console.log(solution('zpiaz', [1, 2, 0, 0, 3]));
// 'pizza'
풀이
1번 풀이 - map()
- str 문자열에서 indices 배열에 있는 숫자에 해당하는 인덱스의 글자를 map()으로 순서대로 추출.
- join()으로 이어 붙여 문자열로 만들어 반환.
📣이 문제에서 가장 헷갈렸던 부분인 str의 인덱스와 indices의 인덱스였다.
무슨 말이냐면 indices의 값 16 ,6, 5에 해당하는 인덱스를 str에서 찾는 것인데 여기서부터 인덱스의 늪이 시작되었다.
아래 예시 1) 코드에서 첫 번째 인자 이름으로 적힌 i는 통상적으로 index를 의미한다.
첫번쨰 인자를 value가 아니라 index로, 즉 indices라는 배열의 인덱스로 착각한것이다.
예시1)
indices.map(i => str[i]).join('');
인자가 하나만 있으면 값인데❗❗ 16 ,6 ,5 라는 값이지 인덱스 [0], [1], [2]가 아닌데❗❗❗
이래서 이름을 잘 지어야 한다😂😂
✅✅정리하자면, map()에서 인자가 하나면 value (배열을 순회하는 값 하나하나. 여기서는 16, 6, 5, 3, 12... )를 의미하고,
str[ ]는 str의 인덱스를 뜻한다. str[indices에서 찾은 값]에 해당하는 인덱스. 즉, str[16] => ' p '를 의미한다.
풀이)
const solution = (str, indices) => {
return indices.map(num => str[num]).join('');
};
console.log(solution('cvsgiorszzzmrpaqpe', [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7]));
// 'programmers'
console.log(solution('zpiaz', [1, 2, 0, 0, 3]));
// 'pizza'
2번 풀이 - reduce()
- 초기값을 ' ' 빈문자열로 시작하고, num은 배열을 순회하는 요소(16, 6, 5, 3...).
- indices배열을 순회하면서 str문자열에 인덱스에 해당하는 문자를 누적.
- acc는 누적된 문자열, str[num]은 현재 순회중인 num에 해당하는 str문자.
str[16] => ' p ' str[6] => ' r ' ...
acc에 누적되서 최종적으로 programmers 라는 문자열이 완성된다.
// 2번 풀이 - reduce
const solution2 = (str, indices) => {
return indices.reduce((acc, num) => acc + str[num], '');
};
console.log(solution2('cvsgiorszzzmrpaqpe', [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7]));
// 'programmers'
console.log(solution2('zpiaz', [1, 2, 0, 0, 3]));
// 'pizza'
--------------------------------------------------------------
// reduce 삼항연산자 풀이법
const solution2 = (str, indices) => {
// acc는 배열에 cur이 있으면 acc반환
indices.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
// 없으면 cur를 포함하여 배열 리턴.
};
console.log(solution2('cvsgiorszzzmrpaqpe', [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7]));
// 'programmers'
console.log(solution2('zpiaz', [1, 2, 0, 0, 3]));
// 'pizza'
✨✨reduce()에서도 인자가 두개일때 첫번째는 누적, 두번째는 배열을 순회하는 요소라는 걸 잊지 말자❗❗❗ 배열의 인덱스가 아니다❌❌❌
참고
나, 쳇지피티
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments