📑 1. 문제설명

💡 2. 풀이과정
그냥 포매팅 연습하는 문제이다.
seoul배열 순회하면서 처음으로 만나는 Kim 문자열의 인덱스를 반환하면 되는 문제이다.
String 포맷할 때는 `String.format("%d ", idx)` 메서드를 사용한다.
class Solution {
public String solution(String[] seoul) {
int idx = 0;
for (int i = 0; i < seoul.length; i++) {
if (seoul[i].equals("Kim")) {
idx = i;
break; // 김서방 찾으면 뒤에는 더 볼 필요 없음
}
}
// 포매팅
return String.format("김서방은 %d에 있다", idx);
}
}
String.format은 C언어의 printf 스타일 포맷팅을 그대로 가져온 거라서 % 기호 뒤에 여러 가지 옵션을 붙일 수 있다.
String.format에서 % 뒤에는 타입 (d, s, f 등)의 옵션 (자릿수, 정렬, 소수점 자리 등)이 올 수 있다.
📌 숫자 포맷팅
- %d → 정수 (decimal)
String.format("%d", 10); // "10"
- %o → 8진수 (octal)
String.format("%o", 10); // "12"
- %f → 실수 (소수점 고정)
String.format("%.2f", 3.14159); // "3.14"
📌 문자열 & 문자
- %s → 문자열
String.format("%s", "Hello"); // "Hello"
- %c → 문자
String.format("%c", 'A'); // "A"
📌 자리수 & 정렬
- %5d → 최소 5자리, 오른쪽 정렬
String.format("%5d", 42); // " 42"
- %-5d → 최소 5자리, 왼쪽 정렬
String.format("%-5d", 42); // "42 "
- %05d → 빈 자리를 0으로 채움
String.format("%05d", 42); // "00042"
📌 특수문자
- %% → % 자체 출력
String.format("진행률 %d%%", 85); // "진행률 85%"
👨💻 3. 정답코드
한줄로 풀수있는 체이닝 메서드가 있다.
리스트로 변환 → indexOf 실행하는 방법이다.
`Arrays.asList(배열명).indexOf("찾는문자열")`
import java.util.Arrays;
class Solution {
public String solution(String[] seoul) {
int idx = Arrays.asList(seoul).indexOf("Kim");
return String.format("김서방은 %d에 있다", idx);
}
}
👏🏻 4. 좋아요 가장 많이 받은 코드
스트림으로 푸는 법
스트림은 인덱스를 다루는 기능이 없어서, IntStream을 이용해야 한다.
즉, 인덱스를 직접 스트림으로 흘려보내면서 검사한다.
import java.util.stream.IntStream;
class Solution {
public String solution(String[] seoul) {
int idx = IntStream.range(0, seoul.length) // 0 ~ seoul.length-1 인덱스 스트림
.filter(i -> seoul[i].equals("Kim")) // 값이 "Kim"인 인덱스만 추리기
.findFirst() // 첫 번째 값만 가져오기
.orElse(-1); // 못 찾으면 -1
return String.format("김서방은 %d에 있다", idx);
}
}
- `IntStream.range(0, seoul.length)`
→ [0, 1, 2, …, n-1] 형태의 인덱스 스트림 생성하기 - `.filter(i -> seoul[i].equals("Kim"))`
→ 실제 배열 값이 "Kim"인 인덱스만 남기기 - `.findFirst()`
→ 가장 앞의 인덱스를 Optional로 반환하기 - `.orElse(-1)`
→ 못 찾으면 -1 리턴
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
| [프로그래머스] (Java) 3진법 뒤집기 문제풀이 (1) | 2025.09.03 |
|---|---|
| [프로그래머스] (Java) 삼총사 문제풀이 - 완전탐색, 투포인터 (1) | 2025.09.03 |
| [프로그래머스] (Java) 덧칠하기 (1) | 2025.09.03 |
| [프로그래머스] (Java) 2016년 (1) | 2025.09.03 |
| [프로그래머스] (Java) 영어 끝말잇기 문제풀이 - 해시 HashSet (5) | 2025.08.30 |