[JavaScript/프로그래머스] 연습문제 - 덧칠하기

2023. 5. 9. 14:53·Coding Test/Programmers_JavaScript
728x90

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

초기 정답 코드 - 로직 설명 주석

// 함수 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
'Coding Test/Programmers_JavaScript' 카테고리의 다른 글
  • [JavaScript/프로그래머스] 그래프 - 순위
  • [JavaScript/프로그래머스] 그래프 - 가장 먼 노드
  • [JavaScript/프로그래머스] 연습문제 - 기사단원의 무기
  • [JavaScript/프로그래머스] 연습문제 - 카드 뭉치
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    react
    HTML
    JavaScript
    CSS
    programmers
    TypeScript
    프로그래머스
    Baek Joon
    SQL
    Python
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[JavaScript/프로그래머스] 연습문제 - 덧칠하기
상단으로

티스토리툴바