728x90
문제 링크
초기 정답 코드 - 로직 설명 주석
// 함수 solution은 세 개의 매개변수를 받습니다.
// n: 전체 섹션의 개수 (정수)
// m: 한 번에 처리할 수 있는 섹션의 범위 (정수)
// section: 처리해야 할 섹션의 목록 (정수 배열)
function solution(n, m, section) {
// count는 처리된 섹션의 개수를 저장합니다.
let count = 0;
// location은 현재 처리 위치를 저장합니다.
let location = 0;
// section 배열의 길이가 1 이상인 동안 반복합니다.
while (section.length >= 1) {
// count를 1 증가시킵니다.
count += 1;
// location을 현재 섹션의 인덱스보다 하나 작게 설정합니다.
location = section[0] - 1;
// location부터 location+m까지 반복합니다.
for (let i = location; i <= location + m; i++) {
// 현재 인덱스 i가 section[0]과 같다면,
if (i === section[0]) {
// section 배열에서 첫 번째 요소를 제거합니다.
section.shift();
}
}
}
// 처리된 섹션의 개수인 count를 반환합니다.
return count;
}
1차 개선 - 코드 구조 변경(주석 제거 버전)
같은 값을 선언하는 count와 location을 한 줄에 선언하도록 구조를 바꾸고,
삼항 연산자를 활용하여 if문을 한 줄로 바꾸어 가독성을 높였습니다.
function solution(n, m, section) {
let count = (location = 0);
while (section.length >= 1) {
count++;
location = section[0] - 1;
for (let i = location; i <= location + m; i++) {
i === section[0] ? section.shift() : null;
}
}
return count;
}
확실히 더 깔끔해진 것 같네요!
End
728x90
'Coding Test > Programmers_JavaScript' 카테고리의 다른 글
[JavaScript/프로그래머스] 그래프 - 순위 (0) | 2023.05.16 |
---|---|
[JavaScript/프로그래머스] 그래프 - 가장 먼 노드 (0) | 2023.05.16 |
[JavaScript/프로그래머스] 연습문제 - 기사단원의 무기 (0) | 2023.05.09 |
[JavaScript/프로그래머스] 연습문제 - 카드 뭉치 (0) | 2023.05.08 |
[JavaScript/프로그래머스] 연습문제 - 최댓값과 최솟값 (0) | 2023.05.08 |