조건문 반복문 심화

최병현·2025년 12월 6일

java

목록 보기
4/38
post-thumbnail

1. 오늘 배운 핵심 개념

1) 상태 관리(State) 개념 완전 이해

  • check[]: 이전에 등장한 문자를 저장하는 방문 배열
  • temp: 직전 문자 저장
  • isGroup: 최종 판정 플래그
  • 상태 관리가 문자열 문제 해결의 핵심임을 이해함

2) 조건 분기와 예외 처리 설계

  • 조건을 위에서 아래로 “필터”처럼 구성하는 방식 학습
  • 예외 케이스를 먼저 처리하면 로직이 깔끔해짐
  • continue 없이도 논리식(&&)만으로 흐름 제어 가능함

3) 문자열 문제 핵심 기술

  • charAt(), length(), substring(), split() 활용
  • 알파벳을 숫자 인덱스로 변환하는 방식(ch - 'a') 이해
  • 문자 하나씩 스캔하며 조건으로 필터링하는 패턴 익힘

4) 누적 계산 로직 (학점 계산)

  • (학점 × 이수학점) 누적 방식 구조 이해
  • P 과목 제외 이유 및 평균 계산 공식 이해
  • 조건 + 누적합 조합의 실전 문제 해결 능력 상승

2. 오늘 실습 1 — 그룹 단어(BOJ 1316)

2-1. 구현 및 배운 점

  • 문자가 바뀌는 순간만 검사하는 효율적 로직
  • check[]로 이전 등장 여부 판단 구조 완전 이해
  • temp로 이전 상태를 기억하는 상태 관리 패턴 체득

2-2. 예시 기반 흐름 이해

  • 같은 문자 연속 → 검사 생략
  • 문자가 바뀔 때 → 등장 여부 검사
  • aba, aabca, abbabba 등 다양한 케이스 직접 분석

3. 오늘 실습 2 — 학점 계산(BOJ 25206)

3-1. 구현한 내용

  • 등급 문자열(A+, B0 등)을 실수 점수로 변환
  • 이수 학점과 곱하여 총 점수 누적
  • P 과목 제외
  • 최종 평점 = totalScore / totalCredits

3-2. 배운 점

  • 초기값 설정의 중요성(-1, 0 등)
  • 조건문이 긴 경우 구조화하는 요령
  • 누적 계산 구조 완전 이해

4. 어려웠던 점

  • check[], temp, isGroup의 역할을 처음에 한 번에 잡기 어려웠음
  • 문자 변화 시점 기반 로직이 낯설었음
  • 학점 계산에서 예외 처리(P 과목 등) 이해가 필요했음
  • 조건문이 길어질 때 흐름을 잡는 데 어려움

5. 해결 & 깨달음

  • 상태 관리는 “이전 값을 기억해야 하는 이유”를 이해하면 단숨에 정리됨
  • continue는 “해당 반복 아래 로직 전체를 스킵”하는 기능임을 명확히 이해
  • 문자열 문제는 결국 조건으로 데이터를 필터링하는 문제임을 체득
  • 누적 계산 문제는 각 요소의 의미(학점 × 이수학점)를 정확히 이해하면 절대 실수 없음

6. 내일 목표

  • 브론즈/실버 문제로 오늘 배운 패턴 실전 적용
  • 같은 문제를 while/for 두 방식으로 풀어보기
  • substring, split, replace를 통한 문자열 조작 강화
  • 세탁기 프로그램을 함수 단위로 리팩토링

7. 느낀 점

오늘은 조건문과 반복문이 단순한 문법이 아니라
“필터처럼 원하는 데이터만 통과시키는 기술”이라는< 점을 깊이 이해한 날이었다.
두 실습(그룹 단어, 학점 계산)을 통해 문법 → 로직 → 프로그램 구조 전체가 연결되는 경험을 할 수 있었다.
profile
Develop

0개의 댓글