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 |
Tags
- react
- 백엔드
- 코딩테스트
- 타입스크립트
- error
- angular
- 코딩테스트연습
- 앵귤러
- TypeScript
- 에러
- CLI
- Array
- node
- Javascript
- Method
- 마음커넥션
- 자바스크립트
- npm
- Programmers
- 개발
- codingtest
- 노드제이에스
- indexOf
- Nextjs
- nodejs
- Reduce
- 프로그래머스
- 노드
- slice
- 노드js
Archives
- Today
- Total
Suzie's Blog
[프로그래머스]특정 문자열로 끝나는 가장 긴 부분 문자열 찾기(JavaScript) (feat. lastIndexOf) 본문
개발/코딩테스트
[프로그래머스]특정 문자열로 끝나는 가장 긴 부분 문자열 찾기(JavaScript) (feat. lastIndexOf)
Iuna 2023. 11. 21. 10:07반응형
SMALL
문제 설명
문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
제한사항
• 5 ≤ myString ≤ 20
• 1 ≤ pat ≤ 5
→ pat은 반드시 myString의 부분 문자열로 주어집니다.
• myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.
입출력 예
myString pat result "AbCdEFG" "dE" "AbCdE" "AAAAaaaa" "a" "AAAAaaaa"
입출력 예 설명
입출력 예 #1
• "AbCdEFG"에서 "dE"는 한 번 등장하며 처음부터 해당 위치까지 잘라내면 "AbCdE"가 됩니다. 따라서 이 문자열이 "dE"로 끝나는 가장 긴 문자열이며, "AbCdE"를 return 합니다.
입출력 예 #2
• "AAAAaaaa"에서 "a"는 총 네 번 등장하며 이 중 가장 마지막에 있는 위치까지 잘라내면 "AAAAaaaa"가 됩니다. 따라서 이 문자열이 "a"로 끝나는 가장 긴 문자열이며, "AAAAaaaa"를 return 합니다.
내가 푼 방법
function solution(myString, pat) {
let reversedString = [...myString].reverse().join('');
let reversedPat = [...pat].reverse().join('')
let index = reversedString.indexOf(reversedPat)
let result = reversedString.slice(index)
return [...result].reverse().join('')
}
문자 arguments 를 배열에 넣어주고 reverse시켜준 뒤, 해당 index를 찾아 slice로 잘라준 후 다시 reverse시켜 string으로 변화시키는 방법으로 풀었다.
풀면서도 굉장히 비효율적인 생각이 들었고 어떻게 해결해야할지 감을 잡지 못했다

감명깊었던 다른사람의 풀이
const solution = (str, pat) => str.substring(0, str.lastIndexOf(pat)) + pat
와우!!! 보자마자 감탄이 나왔다.
substring과 lastIndexOf 메서드를 사용하여 간단히 풀었다니!
lastIndexOf가 존재하는건 오늘 처음 알았다! (이 블로그를 쓰는 목적ㅋㅋ)
substring은 index의 시작과 끝을 언급해주면 원하는 대로 잘라준다.
여기 나오는 index의 시작은 무조건 0일 것이고
끝의 index는 myString에 존재하는 pat의 마지막 인덱스! 즉 lastIndexOf로 구할 수 있다.
substring으로 잘라준 스트링에 pat을 더해 return하면 됨!
const myString = "AbCdEFG"
const pat = "dE"
const lastIndex = myString.lastIndexOf(pat)
// lastIndex = 3
myString.substring(0, lastIndex)
// 'AbC'
myString.substring(0, lastIndex)+pat
//'AbCdE'
반응형
LIST
'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 간단한 논리 연산 (JavaScript) (0) | 2023.11.28 |
---|---|
[프로그래머스] 세 개의 구분자 (JavaScript) (2) | 2023.11.24 |
[프로그래머스] 문자열이 몇 번 등장하는지 세기(JavaScript) (0) | 2023.11.17 |
[프로그래머스] 문자열 뒤집기(JavaScript) (0) | 2023.11.09 |
[프로그래머스] 수열과 구간 쿼리1 (JavaScript) (0) | 2023.10.25 |