JavaScript/알고리즘

프로그래머스 문자열의 뒤의 n글자 JS ( push(),for문,join() / slice() )

hihiha2 2023. 5. 28. 15:02
반응형

문제설명 

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.

 

 

 

✅ 내 코드

function solution(my_string, n) {
    let list = [...my_string]
    let list2 =[]
    let idx = list.length-n
   for (let i =idx; i<list.length; i++) {
       list2.push(list[i])
   }
    return list2.join("")
}

 

 

💻 내가 사용한 방법

Push(): 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환

Array.push(element)

 

 

for문: 어떤 특정한 조건이 거짓으로 판별될 때까지 반복

 for ([초기문]; [조건문]; [증감문])
      문장

1. 초기문: 보통 1로 설정. 복잡한구문 / 변수도 가능

2. 조건문: 조건문이 참일때만 for문이 반복. 조건문이 거짓이면 for문 종결

3. 증감문: 갱신구문. 

증감문이 실행된뒤, 다시 조건문으로 돌아간다.

 

 

join(): 배열의 모든 요소를 연결해 하나의 문자열로 만든다.

Array.join()

 

⭐️ ⭐️ 내가 생각하는 join()쓸때 기억할 것.⭐️ ⭐️ 

1. Array를 String으로 바꿔줌

2. join("") / join() 의 결과값이 생각과 반대

join("") ➡️ 아무 구분없이 쭉연결된 stirng이 됨

join()➡️ ,로 구분되어진 string이 됨

 

 

🙋‍♀️ 내 생각

일단 string으로 되어있는 my_string을 [...]을 이용해서 배열로 만들어주었다.

이 문제를 풀면서 제일 고민했던 부분은 '어떻게해야 뒤에서 n번째부터 받아올수있을까?'여서

배열의 인덱스를 이용해야겠다고 생각했다.

그래서 for문의 i의 초기값을  (배열의길이-n)으로 주고, (이렇게해야 뒤에서 n부터 받아올 수 있으므로)

거기부터 시작해서 끝까지 받아오면 되겠다고 생각했다.

그런 다음 for문이 배열의 인덱스를 돌면서 그 값들을 list2라는 새로운 배열에 push()을 통해 추가해주고

그 값들을 join()메서드를 이용해서 하나의 문자열로 만들었다.

 

 

 

💻  다른사람 코드중에 배울 것

const solution = (my_string, n) => my_string.slice(my_string.length - n)

문제를 다 풀고 제출하고나서 보니,

다른 사람들을 slice메서드를 이용해서 엄청 쉽게 풀었다... ㅎㅎㅎㅎㅎ

나도 slice메서드를 알고 있었는 왜 생각이 안났던걸까 ㅋㅋㅋ

 

이 문제는 사실 slice()만 알면 엄청 쉽게 풀수있는 문제이다.

 

 

slice():  문자열의 일부를 추출하면서 새로운 문자열을 반환

slice()에 하나의 인자만을 넣으면 거기가 begin 지점이 된다.

이 문제에서는 my_string.length-n이 시작지점이 되어야하기 때문에 slice()안의 인자로 그값을 넣으면 바로 답이 나온다.

 

또한 slice()는 배열에만 쓸수있는게 아니라, string에도 사용할 수 있다. 🔫

str.slice(beginIndex[, endIndex])

 

다음에는 잊어버리지 말아야지 slice()... 😅

 

반응형