안녕하세요! 오늘은 프로그래머스에서 풀어본 두 문제의 풀이 과정을 공유해볼까 합니다.
코딩테스트 준비하시는 분들께 도움이 되었으면 좋겠네요 😊
## 1️⃣ 7의 개수
### 문제 개요
- 정수 배열에서 숫자 7이 몇 번 등장하는지 세는 문제
- 예를 들어 [7, 77, 17]이라는 배열이 주어지면, 총 4개의 7이 있죠!
### 풀이 접근
처음에는 두 가지 방법을 고민했어요:
1. 숫자를 문자열로 변환해서 풀기
2. 나머지 연산자(%)를 활용해서 풀기
두 방법 모두 구현해봤는데, 각각의 장단점이 있더라구요.
### 방법 1: 문자열 변환 (가독성 👍)
for (int i : array) {
char[] charArray = String.valueOf(i).toCharArray();
for (char c : charArray) {
if (c == '7') count++;
}
}
방법 2: 나머지 연산자 (성능 👍)
for (int i : intArr) {
while (i > 0) {
if (i % 10 == 7) count++;
i /= 10;
}
}
2️⃣ 컨트롤 제트(Control Z)
문제 개요
- 숫자들과 'Z'가 공백으로 구분된 문자열이 주어져요
- Z가 나오면 바로 전에 더했던 숫자를 취소(뺄셈)하는 문제
- 예: "1 2 Z 3" → (1 + 2 - 2 + 3) = 4
핵심 코드
int lastNum = 0;
int answer = 0;
for (String s : splitStr) {
if (s.equals("Z")) {
answer -= lastNum;
} else {
lastNum = Integer.parseInt(s);
answer += lastNum;
}
}
💡 오늘의 교훈
- 단순 반복은 for문보다 while문이 더 깔끔할 수 있다
- 문제 해결 방법은 여러 가지! 상황에 맞는 최적의 방법을 선택하자
- 코드의 가독성과 성능은 때로는 trade-off 관계
'📚 학습 기록 > Java 기초 & 중급' 카테고리의 다른 글
🚀 [25.02.28][Java] 예외 처리 완전 정리! (김영한 강사님 강의 기반) (1) | 2025.02.28 |
---|---|
[25.02.25][Java] 예외 처리 (Exception Handling) - 예외 계층, 체크 예외 vs 언체크 예외 (0) | 2025.02.25 |
📅 학습 날짜: 2025.02.21[자바 예외 처리 - 예외 계층 정리] (2) | 2025.02.21 |
[25.02.20][Java 기초] 조건문 완벽 이해하기 - if, switch, 삼항 연산자 (1) | 2025.02.20 |
📅 [25.02.20] 자바 중첩 클래스와 내부 클래스 정리 (1) | 2025.02.20 |