📌 문제
📌 풀이
처음 풀이 🚫
function solution(str_list) {
var answer = [];
str_list.forEach((item, idx) => {
if (item === 'l') {
answer = str_list.slice(0, idx);
return
}
if (item === 'r') {
answer = str_list.slice(idx + 1);
return
}
})
return answer;
}
forEach()
를 사용해 조건에 맞는 경우에 로직을 실행하고 return 을 통해 반복문을 멈추도록 의도했다.- 하지만 코드 실행 결과 해당 로직은 통과하지 못했다..
- 통과하지 못한 원인을 파악하다,
forEach()
는 반복을 조기에 종료할 수 있는 기능이 없다는 것을 부끄럽게도 처음 알게 되었다..🙈💧
반성하는 마음으로 잊어버리지 않기 위해 정리한다..
+ 반복을 조기에 종료할 수 있는 것들
for (let i = 0; i < arr.length; i++) {
if (조건) {
break; // 조건 만족 시 반복 종료
}
// 작업 수행
}
for (const item of arr) {
if (조건) {
break; // 조건 만족 시 반복 종료
}
// 작업 수행
}
break
키워드를 사용해서 반복을 조기에 종료할 수 있다- 또한, 함수 내에서 사용하면
return
을 통해 반복문뿐 아니라 함수 전체를 종료할 수도 있다.
맞는 풀이 💯
function solution(str_list) {
for (const [idx, item] of str_list.entries()) {
if (item === 'l') {
return str_list.slice(0, idx);
}
if (item === 'r') {
return str_list.slice(idx + 1);
}
}
return [];
}
- for문 외에 다른 방식으로 풀고 싶어 for...of문을 사용해보기로 했다.
- 이 문제에서는 인덱스 값을 가져와야 했는데, 배열의 인덱스 값은
.entries()
로 가져올 수 있었다. .entries()
를 사용하여 [인덱스, 값] 쌍을 순회한다.- 조건을 만족하면 즉시 return 으로 함수가 종료된다.
.entries()
는 Array 와 Object 둘 다 사용할 수 있는 메서드이다.
Array.prototype.entries()
(위 풀이에서 사용한 .entries 의 경우)
반환 값은 실제로 배열이 아니라 이터레이터(iterator)이다. 이 이터레이터는 순회할 때마다 [인덱스, 값] 형태의 배열을 반환한다.
예를 들어, ['a', 'b', 'c'] 라면, 이터레이터를 배열로 변환하면 다음과 같이 보인다.
Array.from(str_list.entries());
// 결과: [[0, "a"], [1, "b"], [2, "c"]]
Object.entries(obj)
Array.prototype.entries() 와 달리 Object.entries(obj) 는 최종적으로 배열을 반환한다.
객체의 모든 열거 가능한 속성 [키, 값] 쌍들을 배열로 반환한다.
728x90
'배움 기록 > 코테 연습' 카테고리의 다른 글
[프로그래머스] 2의 영역 : JavaScript (1) | 2025.01.30 |
---|---|
[프로그래머스] 세로 읽기 : JavaScript (0) | 2025.01.25 |
[프로그래머스] 주사위 게임 3 : JavaScript (1) | 2025.01.19 |
[프로그래머스] 배열 만들기 4 : JavaScript (1) | 2025.01.18 |
[프로그래머스] 수열과 구간 쿼리 2 : JavaScript (0) | 2024.12.30 |
댓글