Notice
Recent Posts
Recent Comments
Link
great minds think alike
[C] 프로그래머스 스쿨_1주차 과제 문제: 공배수 본문

[1] 문제
문제 설명
정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
- 10 ≤ number ≤ 100
- 2 ≤ n, m < 10
입출력 예
number | n | m | result |
60 | 2 | 3 | 1 |
55 | 10 | 5 | 0 |
입출력 예 설명
입출력 예 #1
- 60은 2의 배수이면서 3의 배수이기 때문에 1을 return합니다.
입출력 예 #2
- 55는 5의 배수이지만 10의 배수가 아니기 때문에 0을 return합니다.
[2] 정답 & 해석
(1) 오답
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int number, int n, int m) {
int answer = 0;
if (number%(n*m)==0){
answer=1;
}
else {
answer=0;
}
return answer;
}
틀린 이유: n이 m의 배수이거나 m이 n의 배수인 경우를 고려하지 않아서 오답
(2) 정답
#include <stdio.h>
#include <stdbool.h>
int solution(int number, int n, int m) {
if (n % m == 0 || m % n == 0) { // n이 m의 배수거나 m이 n의 배수인 경우
if (number % n == 0) // number가 n의 배수인 경우
return 1;
} else { // 서로소인 경우
if (number % (n * m) == 0) // number가 n과 m의 최소공배수의 배수인 경우
return 1;
}
return 0;
}
(3) 해석
if (n % m == 0 || m % n == 0) 조건에서는 n이 m의 배수이거나 m이 n의 배수인 경우를 확인한다.
만약 n이 m의 배수이면서 동시에 number가 n의 배수인 경우, 1을 반환한다.
위 조건에 걸리지 않는 경우, 즉 n과 m이 서로소인 경우에는 number가 n과 m의 최소공배수의 배수인지 확인한다.
number가 n과 m의 최소공배수의 배수인 경우, 1을 반환한다.
위 두 조건에 모두 해당하지 않으면, 즉 number가 n의 배수이면서 m의 배수도 아니고, n과 m이 서로소일 때, 0을 반환한다.
[3] 느낀 점
모든 조건을 세분화하지말고, 필요한 최소한의 조건문을 만들고, 나머지 경우는 0을 반환하게 하는 것도 좋은 방법인 것 같다.
'SWLUG > 프로그래머스 스쿨 (C)' 카테고리의 다른 글
[C] 프로그래머스 스쿨_1주차 과제 문제: n의 배수 (0) | 2024.03.23 |
---|---|
[C] 프로그래머스 스쿨_7주차 문제 1: 배열 원소의 길이 (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_7주차 문제 3: 삼각형의 완성 조건 (1) (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_7주차 문제 2: 아이스 아메리카노 (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_6주차 문제 3: 중앙값 구하기 (0) | 2023.08.11 |