0. 문제
풀이한 문제 - 연속된 수의 합 (프로그래머스 입문 / Lv.0 / 정답률 62%)
https://school.programmers.co.kr/learn/courses/30/lessons/120923
1. 테스트 코드 분석
문제에 제시된 테스트 케이스는 다음과 같다
입력받은 num개의 연속된 정수를 더해서 total 이 되도록 하는 문제이다
학원에서 고등수학을 가르치다보니 수열 단원의 유형들이 익숙했다
그래서 연속된 세 수의 합? 공차가 1인 등차수열이네! 라는 생각이 들었고
세 수라면 a-d , a , a+d 로 놓고 방정식을 풀고
연속된 네 수의 합이라면 a-2d, a-d, a, a+d로 놓고 풀면 되겠다! 고 간단하게 생각했다
하지만 우리는 연속된 정수여야 하니까
a-2d, a-d, a, a+d로 두면 d가 0.5가 되어야 하고
세 수, 네 수를 넘으면 num이 홀수든 짝수든 구현이 복잡한 것 같았다
테이블 하단 파란색 테스트 케이스 두 가지를 더 추가해서
결과로 출력될 수의 범위를 분석해보았다
수열 단원에서도 a-d , a , a+d 형태로 계산하기 쉬운 것은 num 이 홀수일 때인 것처럼
해당 문제도 num이 홀수와 짝수일 때 계산 방식이 달라졌다
수의 기준은 total / num 값으로 잡고
num / 2 한 값을 a라고 하면
홀수의 경우 기준 ± a 범위로 가졌고
짝수의 경우 {기준 - (a-1)} ~ {기준 + a} 를 범위로 가졌다
2. 코드 및 풀이
total / num 값을 저장하는 tn,
num / 2 값을 저장하는 n2,
출력할 숫자 범위의 시작 값과 끝 값을 저장할 startpoint, endpoint 변수를 선언했다
앞서 말했든 짝수와 홀수는 각각 시작점, 끝점 계산 방법이 다르기 때문에
조건문으로 짝수와 홀수 경우를 나눠서
시작점과 끝점을 계산했다
반복문으로 시작점부터 끝점까지 반복하며 벡터에 추가하도록 했다
해당 게시글에 사용된 PPT 이미지는
모두 직접 제작했습니다
'[ Computer Science ] > Algorithm_C++' 카테고리의 다른 글
[백준/C++/Greedy] 11047 동전 0 (0) | 2024.08.19 |
---|---|
[백준/C++/Graph] 16928 뱀과 사다리 게임 (0) | 2024.07.28 |
[백준/C++/DP] 1463 1로 만들기 (0) | 2024.06.28 |
[프로그래머스/C++] 주사위 게임 3 (0) | 2024.02.04 |
[프로그래머스/C++] 최빈값 구하기 (0) | 2024.02.04 |
[프로그래머스/C++] 저주의 숫자 3 (0) | 2024.02.04 |
[프로그래머스/C++] 유한소수 판별하기 (1) | 2024.02.04 |