📑 1. 문제설명

💡 2. 풀이과정
이 문제는 주어진 문자열 my_string에서 중복된 문자를 제거하고, 원래의 순서를 유지하면서 중복이 없는 새로운 문자열을 반환하는 것이다.
1. StringBuilder 선언
2. 일반적인 HashSet을 사용하면 순서가 보장되지 않지만, LinkedHashSet은 삽입 순서를 유지한다.
3. 문자열을 문자 배열로 변환한 후, 한 글자씩 순회하면서 StringBuilder에 문자를 추가한다.
- 3-1. 이 때, LinkedHashSet의 add() 메서드는 이미 존재하는 값이면 false를 반환하고, 새로운 값이면 true를 반환한다.
- 3-2. sb.append(c)를 호출하여 StringBuilder에 처음 등장한 문자만 sb에 추가된다.
4. 마지막으로 StringBuilder의 내용을 문자열로 변환하여 반환한다.
👨💻 3. 정답코드
import java.util.LinkedHashSet;
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder();
LinkedHashSet<Character> s = new LinkedHashSet<>();
for (char c : my_string.toCharArray()) {
if (s.add(c)) { // 중복이 아니라면 추가
sb.append(c);
}
}
return sb.toString();
}
}
👏🏻 4. 좋아요 가장 많이 받은 코드
set의 특징을 이용한 코드
import java.util.*;
class Solution {
public String solution(String my_string) {
String[] answer = my_string.split("");
Set<String> set = new LinkedHashSet<String>(Arrays.asList(answer));
return String.join("", set);
}
}
Arrays.asList(answer)를 사용해서 문자열 배열을 리스트로 변환한 후, 이걸 바로 LinkedHashSet에 저장해서 중복을 자동으로 제거한 코드. 이렇게 하면 삽입 순서가 유지 된다.
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java) 가까운 수 문제풀이 (6) | 2025.03.31 |
---|---|
[프로그래머스] (Java) 삼각형의 완성조건(1) 문제풀이 (4) | 2025.03.31 |
[프로그래머스] (Java) 배열 원소의 길이 문제풀이 (8) | 2025.03.30 |
[프로그래머스] (Java) 컨트롤 제트 문제풀이 (4) | 2025.03.30 |
[프로그래머스] (Java) 소인수분해 문제풀이 (SET) (5) | 2025.03.28 |
📑 1. 문제설명

💡 2. 풀이과정
이 문제는 주어진 문자열 my_string에서 중복된 문자를 제거하고, 원래의 순서를 유지하면서 중복이 없는 새로운 문자열을 반환하는 것이다.
1. StringBuilder 선언
2. 일반적인 HashSet을 사용하면 순서가 보장되지 않지만, LinkedHashSet은 삽입 순서를 유지한다.
3. 문자열을 문자 배열로 변환한 후, 한 글자씩 순회하면서 StringBuilder에 문자를 추가한다.
- 3-1. 이 때, LinkedHashSet의 add() 메서드는 이미 존재하는 값이면 false를 반환하고, 새로운 값이면 true를 반환한다.
- 3-2. sb.append(c)를 호출하여 StringBuilder에 처음 등장한 문자만 sb에 추가된다.
4. 마지막으로 StringBuilder의 내용을 문자열로 변환하여 반환한다.
👨💻 3. 정답코드
import java.util.LinkedHashSet; class Solution { public String solution(String my_string) { StringBuilder sb = new StringBuilder(); LinkedHashSet<Character> s = new LinkedHashSet<>(); for (char c : my_string.toCharArray()) { if (s.add(c)) { // 중복이 아니라면 추가 sb.append(c); } } return sb.toString(); } }
👏🏻 4. 좋아요 가장 많이 받은 코드
set의 특징을 이용한 코드
import java.util.*; class Solution { public String solution(String my_string) { String[] answer = my_string.split(""); Set<String> set = new LinkedHashSet<String>(Arrays.asList(answer)); return String.join("", set); } }
Arrays.asList(answer)를 사용해서 문자열 배열을 리스트로 변환한 후, 이걸 바로 LinkedHashSet에 저장해서 중복을 자동으로 제거한 코드. 이렇게 하면 삽입 순서가 유지 된다.
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java) 가까운 수 문제풀이 (6) | 2025.03.31 |
---|---|
[프로그래머스] (Java) 삼각형의 완성조건(1) 문제풀이 (4) | 2025.03.31 |
[프로그래머스] (Java) 배열 원소의 길이 문제풀이 (8) | 2025.03.30 |
[프로그래머스] (Java) 컨트롤 제트 문제풀이 (4) | 2025.03.30 |
[프로그래머스] (Java) 소인수분해 문제풀이 (SET) (5) | 2025.03.28 |