[Algorithm] 중복문자 제거하기

2025. 2. 15. 22:44·Algorithm
설명

소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.

중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.

입력 

첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.

출력 

첫 줄에 중복문자가 제거된 문자열을 출력합니다.

예시 입력 1 

ksekkset

예시 출력 1

kset

 


Solution

package String;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedHashSet;
import java.util.Set;

public class Main {

    public static String Solution(String string) {
        Set<Character> set = new LinkedHashSet<>();
        char[] charArray = string.toCharArray();
        StringBuilder answer = new StringBuilder();

        for (char c : charArray) {
            set.add(c);
        }

        for (Character c : set) {
            answer.append(c);
        }

        return answer.toString();
    }

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        br.close();

        System.out.println(Solution(str));

    }
}

1. 중복 X + 순서 보장 = LinkenHashSet<> 자료구조 한번으로 따로 로직 구현하지 않아도 됨.

2. 내가 좋아하는 StringBuilder 타입으로 정답 작성

 

다른 풀이 방법은 현재 자신의 위치와 indexOf() 메서드를 통해 처음 등장하는 글자인지 여부를 비교하여 처음 등장하는 글자라면 정답에 누적하는 식으로 풀이해도 된다.

그럼 대략 아래 코드처럼 될 듯?

***
***
for(int i = 0 ; i < str.length() : i++){
	if(str.indexOf(str.charAt(i)) == i ) {
    	/* 이 줄에 취향에 맞게 Builder 패턴이나 String 아무렇게나 정답을 누적 */;
       }
***
***

 

String 관련 알고리즘은 그냥 메서드 싸움인것 같다..

이번엔 조금 쉬웠다!

'Algorithm' 카테고리의 다른 글

length vs length()  (0) 2025.05.08
[Algorithm] 회문 문자열  (0) 2025.02.16
[Algorithm] 문자 찾기  (0) 2025.02.15
[Algorithm] 배열 입력이 [1,2,3](대괄호)와 같을 때  (0) 2024.12.28
[Algorithm] 팰린드롬 수 - (백준 1259)  (0) 2024.12.26
'Algorithm' 카테고리의 다른 글
  • length vs length()
  • [Algorithm] 회문 문자열
  • [Algorithm] 문자 찾기
  • [Algorithm] 배열 입력이 [1,2,3](대괄호)와 같을 때
xuv2
xuv2
집에 가고 싶다
  • xuv2
    xuvlog
    xuv2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (170) N
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (5)
      • Java (23)
      • Spring (39) N
        • Core (10)
        • MVC (20)
        • Thymeleaf (9) N
      • DataBase (6)
        • Database Modeling (4)
        • SQL (2)
      • HTTP (11)
      • Network (17)
      • Software Engineering (3)
      • Operating System (3)
      • Algorithm (16)
      • Project (18)
        • Web (9)
        • iOS (8)
        • Python (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xuv2
[Algorithm] 중복문자 제거하기
상단으로

티스토리툴바