Poylib
기록형 프론트엔드
Poylib
전체 방문자
오늘
어제
  • 분류 전체보기 (91)
    • Programing (38)
      • Javascript (17)
      • Typescript (1)
      • React (9)
      • React-Native (6)
      • Git (4)
      • Next (1)
    • Study (36)
      • Algorithm (35)
      • Etc. (1)
    • Record (17)
      • Memoirs (12)
      • Group (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • react-native
  • react
  • ReactNative
  • vite
  • 백준
  • 프로그래머스
  • 회고
  • 기초
  • Git
  • Error
  • javascript
  • Object
  • 자바스크립트
  • 코딩테스트
  • 리액트
  • typescript
  • 코칭스터디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Poylib

기록형 프론트엔드

[programmers / JavaScript] 연속된 수의 합
Study/Algorithm

[programmers / JavaScript] 연속된 수의 합

2022. 11. 17. 14:35
https://school.programmers.co.kr/learn/courses/30/lessons/120923

//test
const num = 3;
const total = 12;

sol1

function solution(num, total) {
  let answer = [];
  let ceilNum = Math.ceil(total / 2);
  while (true) {
    for (let i = num; i > 0; i--) {
      answer.push(ceilNum - i);
    }
    let sum = answer.reduce((acc, cur) => acc + cur, 0);
    if (sum === total) break;
    else if (sum < total) ceilNum++;
    else ceilNum--;
    answer = [];
  }
  return answer;
}

연속된 수의 합은 평균에서 오차범위를 줄여가며 찾으면 된다. Test 변수를 예로 들면

// 편의상 배열의 합계산은 생략했다.

// average : 6
[4,5,6] !== total;

//average : 5
[3,4,5] === total // answer

이 경우는 평균을 기준으로 내려간 숫자 배열의 합이 total 보다 큰 경우이지만 total 보다 작아지는 경우도 고려해야 한다.

const num = 4;
const total = 2;

//average : 1
[ -2, -1, 0, 1 ] !== total

//average : 2
[ -1, 0, 1, 2 ] === total //answer

첫번째 예시와는 달리 평균을 올려줘야 하는 경우이므로, while 문 안에서 total === sum 일 경우 답을 출력하지만 그 외 total이 더 작을 경우 더 클 경우를 모두 고려해줘야 한다.

저작자표시 비영리 변경금지 (새창열림)

'Study > Algorithm' 카테고리의 다른 글

[programmers / JavaScript] 햄버거 만들기  (0) 2023.07.07
[BEAKJOON / node.js] 26069 붙임성 좋은 총총이  (0) 2022.11.19
[BEAKJOON / node.js] 16120 PPAP  (0) 2022.07.11
[BEAKJOON / node.js] 11509 풍선 맞추기  (0) 2022.07.06
[BEAKJOON / node.js] 1946 신입 사원  (0) 2022.07.04
    'Study/Algorithm' 카테고리의 다른 글
    • [programmers / JavaScript] 햄버거 만들기
    • [BEAKJOON / node.js] 26069 붙임성 좋은 총총이
    • [BEAKJOON / node.js] 16120 PPAP
    • [BEAKJOON / node.js] 11509 풍선 맞추기
    Poylib
    Poylib
    모시깽 기록

    티스토리툴바