📚 학습 기록/Java 기초 & 중급

🗓️ 학습 일자: 2025.02.08, 2025.02.18📘 코딩 테스트 프로그래머스 : 가까운 수, 숨어있는 숫자의 덧셈, 한번만 등장한 문자

zenjoydev 2025. 2. 18. 14:33

📌 문제 1: 숨어있는 숫자의 덧셈 2

  • 문제 유형: 문자열 처리

🔍 문제 이해

  • 입력: 자연수가 섞인 문자열
  • 출력: 문자열 내 자연수 합 출력
  • 제약조건: 자연수는 1000 이내

🛠️ 접근 방법

  1. 자리 수 연결 여부 확인 → 실패
  2. StringBuilder를 활용하여 숫자 연속 시 추가, 끊길 시 변환 후 합산
  3. 0 처리 및 마지막 값 처리

💻 핵심 코드

for (int i = 0; i < charArray.length; i++) {
    if ((charArray[i] - '0') >= 0 && (charArray[i] - '0') <= 9) {
        builder.append(charArray[i] - '0');
    } else if (builder.length() > 0) {
        answer += Integer.parseInt(builder.toString());
        builder.setLength(0);
    }
}
if (builder.length() > 0) {
    answer += Integer.parseInt(builder.toString());
}

 

🚨 주의할 점

  • 숫자 변환 및 확인
  • 0 처리 주의
  • 마지막 값 처리

📌 문제 2: 가까운 수

  • 문제 유형: 배열 값 정렬

🔍 문제 이해

  • 입력: 정수 배열
  • 출력: 배열 내 가장 가까운 값 출력

🛠️ 접근 방법

  1. 배열 복사 후 정렬
  2. 앞뒤 값과 차이 비교
  3. 맨 앞/뒤 값 예외 처리

💻 핵심 코드

Arrays.sort(ints);
for (int i = 0; i < ints.length; i++) {
    if (ints[i] == n && i != ints.length - 1 && i != 0) {
        int beforeNum = ints[i - 1];
        int afterNum = ints[i + 1];
        answer = (Math.abs(beforeNum - n) > Math.abs(afterNum - n)) ? afterNum : beforeNum;
    }
}

🚨 주의할 점

  • 절대값 활용
  • 조건 설정

📌 문제 3: 한번만 등장한 문자

  • 문제 유형: 문자열 처리

🔍 문제 이해

  • 입력: 문자열
  • 출력: 한 번만 등장한 문자 출력

🛠️ 접근 방법

  1. 문자열을 캐릭터 배열로 변환
  2. 조건에 따라 StringBuilder에 저장 후 변환
  3. 마지막 값 비교에 주의

💻 핵심 코드

if (charArray.length > 1) {
    if (charArray[charArray.length - 2] != charArray[charArray.length - 1] && count == 1) {
        builder.append(charArray[charArray.length - 1]);
    }
}
if (builder.length() > 0) {
    answer = builder.toString();
}

🚨 주의할 점

  • 마지막 값 판단 및 활용
  • 빌더 값 변환 시점

📈 성능 비교

  1. 숨어있는 숫자의 덧셈 2
    • 실행시간: 5.8ms
    • 메모리: 98MB
  2. 가까운 수
    • 실행시간: 8.5ms
    • 메모리: 97MB
  3. 한번만 등장한 문자
    • 실행시간: 3.03ms
    • 메모리: 93.4MB

📝 학습 내용 정리

  • StringBuilder의 isEmpty()는 Java 15 이상 지원
  • 절대값 활용 방법
  • 마지막 값 처리 중요
  • 조건 설정에 따라 결과값 도출

✏️ 개선 사항

  • 메서드 활용을 통한 코드 간결화
  • 자료 구조 활용 고려