📌 문제 1: 숨어있는 숫자의 덧셈 2
- 문제 유형: 문자열 처리
🔍 문제 이해
- 입력: 자연수가 섞인 문자열
- 출력: 문자열 내 자연수 합 출력
- 제약조건: 자연수는 1000 이내
🛠️ 접근 방법
- 자리 수 연결 여부 확인 → 실패
- StringBuilder를 활용하여 숫자 연속 시 추가, 끊길 시 변환 후 합산
- 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: 가까운 수
- 문제 유형: 배열 값 정렬
🔍 문제 이해
- 입력: 정수 배열
- 출력: 배열 내 가장 가까운 값 출력
🛠️ 접근 방법
- 배열 복사 후 정렬
- 앞뒤 값과 차이 비교
- 맨 앞/뒤 값 예외 처리
💻 핵심 코드
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: 한번만 등장한 문자
- 문제 유형: 문자열 처리
🔍 문제 이해
- 입력: 문자열
- 출력: 한 번만 등장한 문자 출력
🛠️ 접근 방법
- 문자열을 캐릭터 배열로 변환
- 조건에 따라 StringBuilder에 저장 후 변환
- 마지막 값 비교에 주의
💻 핵심 코드
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();
}
🚨 주의할 점
- 마지막 값 판단 및 활용
- 빌더 값 변환 시점
📈 성능 비교
- 숨어있는 숫자의 덧셈 2
- 실행시간: 5.8ms
- 메모리: 98MB
- 가까운 수
- 실행시간: 8.5ms
- 메모리: 97MB
- 한번만 등장한 문자
- 실행시간: 3.03ms
- 메모리: 93.4MB
📝 학습 내용 정리
- StringBuilder의 isEmpty()는 Java 15 이상 지원
- 절대값 활용 방법
- 마지막 값 처리 중요
- 조건 설정에 따라 결과값 도출
✏️ 개선 사항
- 메서드 활용을 통한 코드 간결화
- 자료 구조 활용 고려
'📚 학습 기록 > Java 기초 & 중급' 카테고리의 다른 글
[25.02.20][Java 기초] 조건문 완벽 이해하기 - if, switch, 삼항 연산자 (1) | 2025.02.20 |
---|---|
📅 [25.02.20] 자바 중첩 클래스와 내부 클래스 정리 (1) | 2025.02.20 |
[25.02.16]Java - 입문 개념 정리 및 자기화: 연산자 (1) | 2025.02.16 |
📅 [25.02.16]Java – 입문 개념 정리 및 자기화 – 변수와 패키지 (1) | 2025.02.16 |
[Java 중급] 지역 클래스와 변수의 생명주기 완벽 정리 (1) | 2025.02.14 |