문제설명
문자열 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()... 😅
'JavaScript > 알고리즘' 카테고리의 다른 글
프로그래머스 마지막 두원소 JS ( if문 / reverse(), const ) (0) | 2023.05.29 |
---|---|
프로그래머스 n번째 원소까지 JS ( slice() ) (0) | 2023.05.29 |
프로그래머스 n보다 커질 때까지 더하기 JS ( for문 / while문 ) (0) | 2023.05.28 |
프로그래머스 카운트업 JS ( for문 , Push() / Array(), fill(), map() ) (1) | 2023.05.27 |
프로그래머스 조건에 맞게 수열 변환하기 1 JS ( map() ) (0) | 2023.05.27 |