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

# 🎯 프로그래머스 코딩테스트 풀이 기록 (Level 0) - 25.02.23

zenjoydev 2025. 2. 23. 13:21



안녕하세요! 오늘은 프로그래머스에서 풀어본 두 문제의 풀이 과정을 공유해볼까 합니다. 
코딩테스트 준비하시는 분들께 도움이 되었으면 좋겠네요 😊

## 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;
    }
}

💡 오늘의 교훈

  1. 단순 반복은 for문보다 while문이 더 깔끔할 수 있다
  2. 문제 해결 방법은 여러 가지! 상황에 맞는 최적의 방법을 선택하자
  3. 코드의 가독성과 성능은 때로는 trade-off 관계