[JAVA-알고리즘] 3. 약수 구하기

편준민's avatar
Feb 05, 2025
[JAVA-알고리즘] 3. 약수 구하기

문제

1~100까지의 숫자 중 4의 약수는 “약수”, 아니면 “아님” 출력하기

1. 하드 코딩

package algo; public class Divisor { public static void main(String[] args) { // 1~4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 // 실제 문제는 1~100까지 이지만 1~4로 샘플링 // (약수가 무엇인지 비지니스 파악 혹은 공식 확인하기) // 1. 1은 약수입니다. System.out.println("1은 약수입니다."); // 2. 2는 악수입니다. System.out.println("2은 약수입니다."); // 3. 3은 아님입니다. System.out.println("3은 아님입니다."); // 4. 4는 약수입니다. System.out.println("4은 약수입니다."); } }

2. 변수 찾아 변경하기

package algo; public class Divisor { public static void main(String[] args) { // 1~4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 // 실제 문제는 1~100까지 이지만 1~4로 샘플링 // (약수가 무엇인지 비지니스 파악 혹은 공식 확인하기) int a = 0; String s = ""; // 1. 1은 약수입니다. a++; s = 4 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); // 2. 2는 악수입니다. a++; s = 4 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); // 3. 3은 아님입니다. a++; s = 4 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); // 4. 4는 약수입니다. a++; s = 4 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); } }

3. 공통 모듈로 만들어 반복문을 반복

package algo; public class Divisor { public static void main(String[] args) { // 1~4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 // 실제 문제는 1~100까지 이지만 1~4로 샘플링 // (약수가 무엇인지 비지니스 파악 혹은 공식 확인하기) int a = 0; String s = ""; for (int i = 0; i < 4; i++) { // 1. 1은 약수입니다. a++; s = 4 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); } } }

4. 샘플링 끝났으니 문제 적용

package algo; public class Divisor { public static void main(String[] args) { // 1~4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 // 실제 문제는 1~100까지 이지만 1~4로 샘플링 // (약수가 무엇인지 비지니스 파악 혹은 공식 확인하기) int a = 0; String s = ""; for (int i = 0; i < 100; i++) { // 1. 1은 약수입니다. a++; s = 100 % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); } } }
문제로 적용 하는 중 밑줄 친 부분을 수동적으로 바꿔줘야 하는 점을 발견

5. 위 문제점 고친 코드

package algo; public class Divisor { public static void main(String[] args) { // 1~4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 // 실제 문제는 1~100까지 이지만 1~4로 샘플링 // (약수가 무엇인지 비지니스 파악 혹은 공식 확인하기) final int N = 100; // final은 바꿀 수 없는 변수 = 상수 (상수는 대문자로 시작) int a = 0; String s = ""; for (int i = 0; i < N; i++) { // 1. 1은 약수입니다. a++; s = N % a == 0 ? "약수" : "아님"; System.out.println(a + "은 " + s + "입니다."); } } }
해당 부분을 변수로 생각하여 만듬. 문제가 달라져도 N의 부분만 바꿔주면 여러 곳을 바꿀 필요가 없다.

결과

notion image
Share article

YunSeolAn