[본캠프] 20일차

윤영범·2026년 4월 6일

코드카타 문제

문자열 인덱스 처리 & 구현 방식 비교 (이상한 문자 만들기)
1. 문제 핵심 이해
문자열을 공백 기준으로 나누어 각 단어별 인덱스를 따로 관리
짝수 인덱스 -> 대문자
홀수 인덱스 -> 소문자
공백을 만나면 인덱스를 다시 0으로 초기화해야 한다
2. 내가 작성한 코드 (char 배열 방식)

public static String solution11(String s) {
    char[] charArr = s.toCharArray();
    int idx = 0;

    for(int i = 0; i < charArr.length; i++) {
        if(charArr[i] == ' ') {
            idx = 0;
        } else {
            if(idx % 2 == 0) {
                charArr[i] = Character.toUpperCase(charArr[i]);
            } else {
                charArr[i] = Character.toLowerCase(charArr[i]);
            }
            idx++;
        }
    }

    return new String(charArr);
}
  • 배운 점
    문자열을 char[]로 바꾸면 직접 수정 가능
    공백 기준으로 인덱스를 리셋하는 게 핵심 포인트
    문자열 문제는 idx 관리가 중요하다
  1. 다른사람이 쓴 StringBuilder 방식
public String solution(String s) {
    StringBuilder answer = new StringBuilder();
    int idx = 0;

    for(char c : s.toCharArray()) {
        if(c == ' ') {
            answer.append(" ");
            idx = 0;
        } else {
            if(idx % 2 == 0) {
                answer.append(Character.toUpperCase(c));
            } else {
                answer.append(Character.toLowerCase(c));
            }
            idx++;
        }
    }

    return answer.toString();
}
  • 배운 점
    StringBuilder는 문자열을 계속 추가할 때 효율적
    String += 대신 사용하는 것이 성능적으로 좋음
    실제 코테에서는 StringBuilder가 더 자주 사용됨

오늘 배운 내용 정리

배열 순회 (for문, 향상된 for문)
정렬 (버블정렬)
두 수의 합 문제 (투포인터 vs HashSet)
수열의 합 (누적합, 투포인터)
델타 배열 (2차원 배열 탐색)

배열 기본 개념

배열은 같은 타입의 데이터를 하나로 묶어서 관리하는 구조이다.

int[] arr = {1, 2, 3, 4, 5};

  • 인덱스를 통해 접근

arr[0], arr[1] ...
3. 오늘 느낀 어려운 점
1) 언제 어떤 알고리즘을 써야 하는지 헷갈림

예:

투포인터를 써야 하는지
이진탐색을 써야 하는지
그냥 for문으로 되는지

문제를 보면 아직까진 바로 판단이 잘 안 된다

2) 시간복잡도 감각 부족
O(n), O(n²) 개념은 알겠는데
-> 실제 문제에서 바로 연결이 안 됨
3) 수열의 합 / 누적합 개념
누적합이 왜 필요한지는 이해했지만
-> 언제 써야 하는지 아직 감이 부족함
4) 델타 배열
개념은 이해했지만
실제 문제에 적용해본 적이 없음
4. 오늘 배운 중요한 포인트
배열 문제는 대부분 순회부터 시작

for문으로 해결 가능한지 먼저 판단

정렬 여부가 중요하다
정렬 O → 투포인터
정렬 X → HashSet
문자열/배열 문제는 상태값 관리가 핵심
idx 같은 변수를 잘 관리해야 한다
시간복잡도는 (몇 번 도는지)로 판단
for문 1개 → O(n)
중첩 → O(n²)
5. 아직 부족한 부분 (솔직한 정리)
알고리즘 선택 기준이 아직 명확하지 않음
문제를 보면 바로 풀이 방법이 떠오르지 않음
개념은 이해했지만 응용을 어떻게할지 아직 감이안잡힘

  1. 앞으로의 학습 방향
    하루 2~3문제 꾸준히 풀기
    문제를 풀고 나서
    왜 이 문제 이 방법을썼는지 반드시 정리
    개념 -> 문제 -> 다시 개념 반복

느낀 점

문제를 많이 풀면서
어떤 상황에서 어떤 알고리즘을 쓰는지 감을 익혀야 할 것 같다.

0개의 댓글