이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.
문제 설명
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class sec01_06 {
public static String solution(String str){
String result = "";
for (int i = 0; i < str.length(); ++i) {
if(str.indexOf(str.charAt(i)) == i) result += str.charAt(i);
}
return result;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br.readLine()));
}
}
또는
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class sec01_06 {
public static String solution(String str) {
StringBuilder sb = new StringBuilder();
HashMap<Character, Boolean> map = new HashMap<>();
for (char c : str.toCharArray()) {
if (!map.containsKey(c)) {
map.put(c, true);
sb.append(c);
}
}
return sb.toString();
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br.readLine()));
}
}
설명
첫 번째 코드 설명
- indexOf() 메서드는 파라미터로 들어온 문자의 최초 등장 인덱스를 리턴함
- charAt() 메서드는 파라미터로 들어온 정수에 해당하는 문자열의 인덱스값(문자)을 리턴
- str.indexOf(str.charAt(i)) == i 조건문은 현재 문자가 문자열에서 처음 등장한 위치인지를 확인한다.
- str.indexOf(str.charAt(i))는 현재 문자가 처음으로 등장하는 인덱스를 반환한다.
이 인덱스가 현재 루프의 인덱스 i와 같으면, 해당 문자는 처음 등장한 것이므로 result에 추가한다.
두 번째 코드 설명
- solution 메서드는 문자열 str을 입력받아 중복 문자가 제거된 문자열을 반환한다.
- StringBuilder sb는 결과 문자열을 효율적으로 만들기 위해 사용된다.
- HashMap<Character, Boolean> map은 각 문자가 이미 처리되었는지 여부를 추적하기 위해 사용된다.
- for (char c : str.toCharArray()): 입력 문자열을 문자 배열로 변환하고, 각 문자를 순회한다.
- if (!map.containsKey(c)): 현재 문자가 HashMap에 없는 경우, 즉 처음 등장하는 경우에만 HashMap에 추가하고 StringBuilder에 문자를 추가한다.
- 최종적으로 StringBuilder에 누적된 문자열을 반환한다.
'자료구조 & 알고리즘 > Inflearn' 카테고리의 다른 글
[인프런 알고리즘] Chapter 1, 8번 문제(유효한 팰린드롬) (0) | 2024.07.07 |
---|---|
[인프런 알고리즘] Chapter 1, 7번 문제(회문 문자열) (0) | 2024.07.07 |
[인프런 알고리즘] Chpater 1, 5번 문제(특정 문자 뒤집기) (0) | 2024.07.06 |
[인프런 알고리즘] Chapter 1, 4번 문제(단어 뒤집기) (0) | 2024.07.05 |
[인프런 알고리즘] Chapter 1, 3번 문제(문장 속 단어) (0) | 2024.07.04 |