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