티스토리 뷰

반응형

 

문제

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

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

 

입력

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

 

출력

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

 
 
 

예시 입력

ksekkset

예시 출력

kset

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    String result = "";

    for (char c : input.toCharArray()) {
      if (!result.contains(Character.toString(c))) {
        result += c;
      }
    }

    System.out.println(result);
  }
}

(Time 158ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public String Solution(String str) {
    String result = "";

    for (char c : str.toCharArray()) {
      if (!result.contains(Character.toString(c))) {
        result += c;
      }
    }

    return result;
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 149ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    String result = "";

    for (char c : input.toCharArray()) {
      if (result.indexOf(Character.toString(c)) == -1) {
        result += c;
      }
    }

    System.out.println(result);
  }
}

(Time 162ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public String Solution(String str) {
    String result = "";

    for (char c : str.toCharArray()) {
      if (result.indexOf(Character.toString(c)) == -1) {
        result += c;
      }
    }

    return result;
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 162ms / Memory 27MB)

 

 

 

- 첫번째 풀이에선 contains를 사용, 두번째 풀이에선 indexOf를 사용해서 문제를 풀었다.

- 보통은 contains 보다 indexOf를 사용하길래 시간단축에 도움되나 싶어 둘다 풀어봤는데 조금의 차이로 오히려 contains 사용하여 푼 방식의 수행시간이 더 짧았다. 그럼 실무에서도 indexOf를 더 많이 사용하는 이유는 무엇일까?

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함