inblog logo
|
sxias
    알고리즘

    [알고리즘] 2. 약수 구하기

    문정준's avatar
    문정준
    Feb 07, 2025
    [알고리즘] 2. 약수 구하기
    Contents
    약수 구하기문제 분석1. Sampling & Hard Coding 12. Sampling & Hard Coding 23. Moduling4. Sampling 완성결과5. 문제 코드 작성결과

    약수 구하기

    • 1 ~ 100까지의 수 중에 100의 약수면 “약수”, 아니면 “아님”이라고 출력하시오.
     

    문제 분석

    • 약수는 특정한 수를 나눌 수 있는 수이므로, 나눈 나머지가 0
    • 1 ~ 100까지 찾아야 하므로 반복문 필요
     

    1. Sampling & Hard Coding 1

    • 1 ~ 4까지의 경우만 분석
    package algo; public class Divisor { public static void main(String[] args) { // 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오. // Sampling : 1 ~ 4까지 수 중 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는 약수입니다."); } }
    ✅
    코드 분석
    1. 1, 2, 3, 4를 변수 a로 치환 → a를 1씩 증가시키면서 비교
    1. “입니다” 또는 “가 아닙니다”가 반복 → 반복문 내에 문자열 삽입
     

    2. Sampling & Hard Coding 2

    package algo; public class Divisor { public static void main(String[] args) { // 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오. // Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 int a = 0; // 1. 1은 약수입니다. a++; System.out.println(a+"은 약수입니다."); // 2. 2는 약수입니다. a++; System.out.println(a+"은 약수입니다."); // 3. 3은 약수가 아닙니다. a++; System.out.println(a+"은 약수가 아닙니다."); // 4. 4는 약수입니다. a++; System.out.println(a+"은 약수입니다."); } }
    ✅
    코드 분석 2
    1. a++; sout(~~~)의 형태가 반복 → 반복문에 삽입
    1. 약수일 경우는 “입니다.”, 아닐 경우는 “가 아닙니다.”의 조건 확인
      1. 삼항연산자 활용 가능
     

    3. Moduling

    package algo; public class Divisor { public static void main(String[] args) { // 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오. // Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 int a = 0; String s = ""; for (int i = 0; i < 4; i++) { a++; s = 4 % a == 0 ? "입니다." : "가 아닙니다."; System.out.println(a + "은 약수" + s); } } }
    ✅
    코드 분석 3
    1. 반복문을 통해 공통된 부분 압축
    1. String s를 추가하여 약수일 때만 약수임을 출력하도록 삼항연산자를 이용한 조건 사용
    1. 최대 범위 4를 변수로 활용 가능 → 추가 변수 선언
      1. 범위는 선언 후 바뀌지 않아야 하므로 상수 (final int) 선언도 가능
     

    4. Sampling 완성

    package algo; public class Divisor { public static void main(String[] args) { // 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오. // Sampling : 1 ~ 4까지 수 중 4의 약수는 "약수"라고, 아니면 "아님"이라고 출력하기 int a = 0; final int N = 4; String s = ""; for (int i = 0; i < N; i++) { a++; s = N % a == 0 ? "입니다." : "가 아닙니다."; System.out.println(a + "은 약수" + s); } } }
     

    결과

    notion image
     

    5. 문제 코드 작성

    • 범위를 100으로 확장
    package algo; public class Divisor { public static void main(String[] args) { // 1 ~ 100의 수 중 100의 약수는 "약수", 아니면 "아님"이라고 출력하시오. int a = 0; final int N = 100; String s = ""; for (int i = 0; i < N; i++) { a++; s = N % a == 0 ? "입니다." : "가 아닙니다."; System.out.println(a + "은 약수" + s); } } }
     

    결과

    notion image
     
    Share article
    Contents
    약수 구하기문제 분석1. Sampling & Hard Coding 12. Sampling & Hard Coding 23. Moduling4. Sampling 완성결과5. 문제 코드 작성결과

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog