📑 1. 문제설명
💡 2. 오답정리 (틀린코드)
class Solution {
public String solution(String my_string, String letter) {
StringBuilder sb = new StringBuilder();
for(char c : my_string.toCharArray()) {
if(!c.equals(letter) sb.append(c);
}
return sb.toString();
}
}
string 타입끼리 비교할 때는 .equals 를 쓴다. 그래서 .equals의 부정인 !c.equals(letter)을 썼는데 이 부분이 틀렸다. 틀린 이유는 String 이랑 char 타입이랑 비교할 수 없기 때문이다. char 타입과 String 타입을 직접 equals()로 비교할 수 없고 c.equals(letter)는 컴파일 오류가 발생한다. 그래서 charAt() 메서드를 쓴다.
charAt() 메서드의 매개변수는 정수형 인덱스(index)로 0 이상의 정수, myString.length() - 1 이하이다.
반환값은 해당 위치의 문자 (char 타입)이다.
== 연산자는 String의 값이 아니라 객체의 참조(메모리 주소) 를 비교한다.
따라서 String 비교 시 == 대신 .equals()를 사용하는 것이다.
⭐ 3. 정답코드
class Solution {
public String solution(String my_string, String letter) {
StringBuilder sb = new StringBuilder();
for(char c : my_string.toCharArray()) {
if(c!=letter.charAt(0)) sb.append(c);
}
return sb.toString();
}
}
👏🏻 최적 코드
class Solution {
public String solution(String my_string, String letter) {
return my_string.replace(letter, "");
}
}
처음 알게 된 사실인데 String.replace(String target, String replacement)를 활용하면 특정 문자를 제거하는 기능을 바로 수행할 수 있다. letter을 "" 공백으로 치환하도록 코드 작성 해 주었다.
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java) 진료순서 정하기 (HashMap) 문제풀이 (4) | 2025.03.17 |
---|---|
[프로그래머스] (Java) 외계행성의 나이 문제풀이 (6) | 2025.03.17 |
[프로그래머스] (Java) 배열의 평균값, 옷가게 할인 받기, 아이스 아메리카노 , 나이 출력, 배열 뒤집기 문제풀이 (6) | 2025.03.10 |
[프로그래머스] (Java) 피자 나눠 먹기 (1), (2), (3) (6) | 2025.03.10 |
[프로그래머스] (Java) 최빈값 구하기 (해시맵) (9) | 2025.03.06 |