Level. 0
문제
문자열 my_string이 매개변수로 주어집니다.
my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return 하도록 solution 함수를 완성해 주세요.
* 제한사항
- 1 ≤ my_string ≤ 110
- my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
풀이
import java.util.Map;
import java.util.HashMap;
class Solution {
public String solution(String my_string) {
String answer = "";
String[] arr = my_string.split("");
Map<String, Integer> map = new HashMap<>();
for(String str : arr){
if(map.containsKey(str)) continue;
map.put(str, 0);
answer += str;
}
return answer;
}
}
다른 풀이 1 - Stream
import java.util.stream.Collectors;
class Solution {
public String solution(String my_string) {
return my_string.chars()
.mapToObj(Character::toString)
.distinct()
.collect(Collectors.joining());
}
}
stream.distinct()
- distinct() : 스트림에서 중복되는 요소들을 모두 제거해 주고 새로운 스트림을 반환한다.
다른풀이 2 - 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);
}
}
중복값을 저장하지 않는 set 자료구조를 사용하였으며,
그중 저장 순서를 유지하는 LinkedHashSet을 사용한 풀이이다.
Set
1. HashSet
Set<> 객체명 = new HashSet<>();
중복값을 저장하지 않으며, 순서를 보장하지 않는다.
2. TreeSet
Set <> set = new TreeSet<>();
중복값을 저장하지 않으며, 순서를 보장하지 않는다.
이진탐색 구조로 이루어져 있으며, 자동정렬을 지원한다.
3. LinkedHashSet
Set<> set = new LinkedHashSet<>();
중복값을 저장하지 않으며 저장순서를 유지한다.
Join(String, Object[])
각 요소 사이에 지정된 구분 기호를 여러 개의 문자열을 연결한다.
public static string Join (string? separator, params object?[] values);
- separator : 구분 기호로 사용할 문자열
- values : 연결할 요소가 포함된 배열
https://school.programmers.co.kr/learn/courses/30/lessons/120888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 합성수 찾기 / 에라토스테네스의 체 알고리즘 (1) | 2023.11.27 |
---|---|
[프로그래머스(Java)] 이차원 배열 대각선 순회하기 (0) | 2023.11.27 |
[프로그래머스(Java)] 문자열 반복해서 출력하기 / String.repeat() (0) | 2023.11.26 |
[프로그래머스(Java)] 배열 만들기 5 (0) | 2023.11.26 |
[프로그래머스(Java)] A로 B 만들기 (0) | 2023.11.26 |