내 풀이
ArrayList의 contains로 list에 안 담겨 있는 문자를 추가해주고 출력
public class Main {
public String solution(String str) {
String answer = "";
ArrayList<Character> list = new ArrayList<>();
char[] c = str.toCharArray();
for (int i = 0; i < str.length(); i++) {
if (!list.contains(c[i])) {
list.add(c[i]);
}
}
for (int i = 0; i < list.size(); i++) {
answer += list.get(i);
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
Main T = new Main();
System.out.println(T.solution(s));
}
}
슨상님 풀이
이런 풀이방법을 처음에 출력문으로 보여주고 설명을 해줘서 이해하기 정말 좋았다.
i 와 indexOf가 같다면 중복문자의 첫 번째이므로 이를 넣어준다. 만약 문자가 2번째 나오면 indexOf는 앞에서부터 찾기 때문에 앞에서 나온 같은 문자의 인덱스가 나오게 된다.
public class Main2 {
public String solution(String str) {
String answer = "";
for (int i = 0; i < str.length(); i++) {
//System.out.println(str.charAt(i) + " " + i + " " + str.indexOf(str.charAt(i)));
// indexOf를 활용한 풀이 indexOf는 앞에서부터 찾는다.
// 문자의 인덱스(위치)와 indexOf로 나온 위치가 같다면 처음 나온 문자이다.위 프린트문을 출력해보면 알 수 있다.
if (str.indexOf(str.charAt(i)) == i) {
answer += str.charAt(i);
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
Main2 T = new Main2();
System.out.println(T.solution(s));
}
}
'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글
8. 유효한 팰린드롬 (0) | 2022.03.25 |
---|---|
인프런 7. 회문 문자열(JAVA) (0) | 2022.03.25 |
인프런 5. 특정 문자 뒤집기 (Java) (0) | 2022.03.10 |
인프런 4. 단어뒤집기 (Java) (0) | 2022.03.10 |
인프런 3. 문장 속 단어 (Java) (0) | 2022.03.07 |