반복문(while) / continue 로직 + 문자열

최병현·2025년 12월 2일

java

목록 보기
2/38
post-thumbnail

✅ 1. 오늘 배운 내용

  • while 반복문 기본 구조 (초기값 → 조건 검사 → 내부에서 i 증가)
  • i를 0부터 시작하고 num = i + 1로 실제 검사값 만드는 패턴
  • 배수 판별: num % multiple == 0
  • 짝수 / 홀수 판별: num % 2 == 0 (짝수), num % 2 != 0 (홀수)
  • continue의 동작: 조건이 true면 아래 코드 건너뛰고 다음 반복으로 이동
  • if + continue로 “필요 없는 값 걸러내기” (필터링 로직)
  • 여러 조건을 순서대로 검사해서, 조건을 모두 통과한 값만 sum에 누적하는 방식
  • for문 vs while문: 성능 차이보다 “읽기 좋은 상황에 맞게 선택”하는 게 더 중요하다는 것

✅ 2. 오늘 연습했던 문제

✅ (1) 1부터 최댓값까지 중에서 특정 배수의 합 구하기

Scanner scanner = new Scanner(System.in);

System.out.print("최댓값: ");
int max = scanner.nextInt();

System.out.print("배수 기준: ");
int multiple = scanner.nextInt();

int i = 0;
int sum = 0;

while (i <= max) {
    int num = i + 1;

    if (num % multiple != 0) { // 배수가 아니면 건너뛰기
        i++;
        continue;
    }

    sum += num;
    i++;
}

System.out.println("배수의 합: " + sum);

✅ (2) 1부터 최댓값까지 중에서 “특정 배수이면서 짝수인 수”의 합 구하기

Scanner scanner = new Scanner(System.in);

System.out.print("최댓값: ");
int max = scanner.nextInt();

System.out.print("배수 기준: ");
int multiple = scanner.nextInt();

int i = 0;
int sum = 0;

while (i <= max) {
    int num = i + 1;

    if (num % multiple != 0) { // 배수 아니면 통과 불가
        i++;
        continue;
    }
    if (num % 2 != 0) {        // 홀수면 통과 불가
        i++;
        continue;
    }

    sum += num;
    i++;
}

System.out.println("조건 만족 숫자 합: " + sum);

✅ (3) 짝수이면서 4의 배수이고, 6의 배수는 아닌 수들의 합 구하기

Scanner scanner = new Scanner(System.in);

System.out.print("최댓값: ");
int max = scanner.nextInt();

int i = 0;
int sum = 0;

while (i <= max) {
    int num = i + 1;

    if (num % 6 == 0) {   // 6의 배수는 제외
        i++;
        continue;
    }
    if (num % 2 != 0) {   // 홀수는 제외
        i++;
        continue;
    }
    if (num % 4 != 0) {   // 4의 배수가 아니면 제외
        i++;
        continue;
    }

    sum += num;
    i++;
}

System.out.println("합계: " + sum);

✅ 3. 어려웠던 점

  • i를 0에서 시작할 때 num = i + 1을 쓰는 이유가 처음엔 헷갈렸음 (반복 인덱스 vs 실제 숫자 구분)
  • num % multiplemultiple % num을 헷갈려서 배수 방향(검사값 vs 기준값)이 뒤집히는 실수를 했음
  • continue가 실행되었을 때, 실제로 어떤 코드가 건너뛰어지는지 흐름을 머릿속으로 그리는 게 어려웠음
  • 조건을 “배수 아님 → true” / “배수임 → false” 같은 부정형으로 생각하는 게 헷갈렸음
  • 짝수/홀수 판별에서 나눗셈(/)과 나머지(%)를 혼동했던 부분이 있었음

✅ 4. 해결과 깨달음

  • “검사할 숫자가 앞, 기준 숫자가 뒤” → num % multiple 형태로 통일하면서 헷갈림이 줄어듦
  • if (조건이 true면 continue) 구조를 “필요 없는 값은 위에서 버리고, 살아남은 값만 아래에서 처리한다”는 필터 개념으로 이해
  • i의 시작값(0 또는 1)에 따라 num = i + 1 또는 num = i를 선택할 수 있다는 걸 알게 됨
  • 여러 조건을 나눠서 if + continue로 처리하면, 로직이 단계별 필터처럼 보이면서 훨씬 이해가 잘 됨
  • 문자열 복습을 다시 하면서, 문자도 결국 숫자라는 개념(ASCII)을 반복문/배열 문제에도 자연스럽게 연결할 수 있게 됨

✅ 5. 내일 목표

  • 백준 브론즈/실버 문제를 많이 풀면서 오늘 배운 while + continue + % 연산 패턴을 실전에서 활용
  • 같은 문제를 for문으로도 다시 풀어보면서 for vs while 감각 익히기
  • continue 없이 if (조건A && 조건B) 형태로 바꾸는 연습도 해보기
  • 문자열 심화(substring, split, replace, toLowerCase/toUpperCase)를 백준 문자열 문제에 적용해 보기

✅ 6. 느낀점

오늘은 while, continue, 배수/짝수/홀수 판별을 집중적으로 다루면서,
반복문이 “어려운 문법”이 아니라 그냥 조건 + 필터 + 누적이라는 걸 몸으로 느낀 날이었다.

중간중간에 i 증가 타이밍이나 조건식을 반대로 쓰는 실수를 했지만,
직접 예시를 넣어 하나씩 따라가 보면서 계속 고쳐 나가니까
점점 흐름이 눈에 들어오고 있다.

어제 했던 문자열/ASCII 개념도 오늘 로직에 자연스럽게 연결되면서
“배운 것들이 따로 노는 게 아니라 서로 이어지고 있다”는 느낌이 들었다.

내일은 백준 문제를 많이 풀면서,
오늘 만든 이 패턴들을 진짜 내 몸에 박아넣는 하루로 만들어보자.

profile
Develop

0개의 댓글