◇ 문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
◇ 제한 조건
- n은 0 이상 3000이하인 정수입니다.
◇ 입출력 예시
n | return |
12 | 28 |
5 | 6 |
◇ 예시 설명
예시 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.예시 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.
◇ 초기 내용
※ [출처] 프로그래머스-코딩테스트 연습-문제명
※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int n) {
int answer = 0;
return answer;
}
◇ 답안
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int n) {
int answer = 0;
for(int i = 1; i<=n; i++){
if(n%i==0){
answer += i;
}
}
return answer;
}
◇ 답안 힌트
▶ n이 어떤값으로 나누어 떨어질때, 어떤값이 n의 약수가 됩니다.
▶ 약수는 무조건 n보다 작거나 같습니다.
◇ 답안 풀이
(※ 실행 흐름 순으로 해석됩니다.)
int solution(int n) {
int answer = 0;
//0은 약수로 들어가지 않음 주의!!
//1~n까지 for반복문을 돌림
for(int i = 1; i<=n; i++){
// n/i에서 n이 딱 나누어 떨어진다면 i는 n의 약수이므로 answer에 i를 더함
if(n%i==0){
answer += i;
}
}
return answer;
}
◇ 실행결과
◇ 출처
https://programmers.co.kr/learn/challenges
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
'코딩테스트 > C언어' 카테고리의 다른 글
[Level1] 자연수 뒤집어 배열로 만들기 답안 및 풀이 (0) | 2021.06.09 |
---|---|
[Level1] 자릿수 더하기 답안 및 풀이 (0) | 2021.06.09 |
[Level1] 이상한 문자 만들기 답안 및 풀이 (0) | 2021.06.08 |
[Level1] 문자열을 정수로 바꾸기 답안 및 풀이 (0) | 2021.06.07 |
[Level1] 문자열 다루기 기본 답안 및 풀이 (0) | 2021.06.07 |
댓글