728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/01-06
- 간단한 문제 설명 : 입력한 문자열에서 중복되는 문자가 있다면 최초 발견된 문자 외에 나머지 문자를 제거하고 출력하는 문제
내 풀이
- 소문자 알파벳의 아스키 코드값과 알파벳의 중복을 체크할 boolean 배열을 만들어 풀이
import java.io.*;
public class Main {
//a~z 아스키코드 -> 97~122
public String solution(String s) {
StringBuilder sb = new StringBuilder();
char[] chars = s.toCharArray();
boolean[] check = new boolean[26]; //알파벳의 중복을 체크, true이면 중복되는 알파벳
for (char c : chars) {
if (!check[c-97]) { //중복된 알파벳이 아니라면
check[c-97] = true;
sb.append(c);
}
}
return sb.toString();
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
System.out.println(T.solution(s));
}
}
강의 풀이
- String의 indexOf 메서드 활용하여 간결한 풀이
- indexOf는 지정한 문자가 처음 발견되는 위치를 반환하기 때문에 현재 인덱스와 indexOf에서 반환한 인덱스가 일치하지 않으면 중복되는 문자
import java.util.*;
class Main {
public String solution(String str){
String answer="";
for(int i=0; i<str.length(); i++){
if(str.indexOf(str.charAt(i))==i) answer+=str.charAt(i);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.print(T.solution(str));
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘/인프런]1-8 유효한 펠린드롬(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.05 |
---|---|
[알고리즘/인프런]1-7 회문문자열(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.05 |
[프로그래머스] 124나라의 숫자 java (0) | 2020.12.13 |
[2018 KAKAO BLIND RECRUITMENT] 다트 게임 자바 (0) | 2020.11.19 |
백준 2941번 크로아티아 알바펫(Java) (0) | 2020.10.26 |
댓글