[ 프로그래머스 ][ Java ] 중복된 문자 제거

chorok ☘️·2025년 6월 27일
0

코딩테스트

목록 보기
22/54
post-thumbnail

코딩테스트 연습 > 코딩테스트 입문 > 중복된 문자 제거

⚡ 문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

⚡ 제한사항

  • 1 ≤ my_string ≤ 110
  • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(" ")도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

⚡ 입출력 예

my_stringresult
"people""peol"
"We are the world""We arthwold"

⚡ 구현코드

나의 문제 풀이

import java.util.*;

class Solution {
    public String solution(String my_string) {

        String[] list = Arrays.stream(my_string.split(""))
                    		  .distinct()
                 		      .toArray(String[]::new);

        String answer = String.join("", list);
        return answer;
    }
}

다른 사람의 문제 풀이

import java.util.stream.Collectors;

class Solution {
    public String solution(String my_string) {
        return my_string.chars()
                		.mapToObj(Character::toString)
                		.distinct()
                		.collect(Collectors.joining());
    }
}

⚡ 구현코드 해설

나의 코드

split을 사용해서 문자열을 문자 배열로 만들었다.

다른 사람의 코드

my_string.chars() : 문자열을 IntStream으로 변환합니다.
각 문자는 유니코드 정수 값(int) 으로 표현됩니다.
예: "abc" → [97, 98, 99]

mapToObj(Character::toString) : IntStream의 각 정수(int)를 문자(char)로 바꾸고 → 문자열(String)으로 변환
Character::toString은 i -> Character.toString((char)i)와 같은 의미입니다.
결과는 Stream이 됩니다.
예: [97, 98, 99, 97] → ["a", "b", "c", "a"]

.distinct() : 중복된 문자열(문자)을 제거합니다.
예: ["a", "b", "c", "a"] → ["a", "b", "c"]

.collect(Collectors.joining()) : 스트림의 문자열 요소들을 하나의 문자열로 합칩니다.
예: ["a", "b", "c"] → "abc"

profile
백엔드 개발자 chorok's velog

0개의 댓글