문제 이해
- 같은 문자가 중복되어 등장하는지 확인하라
- 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘을 고민하라
해결 전략
- 배열을 사용해서 문자를 저장해서 중복을 확인한다.
- 배열을 사용하지 않으려면, 문자열을 정렬한 후 이웃하는 문자 중 같은 문자가 있는지 확인한다.
-> 문자열을 정렬할 때는, 문자열을 char형 배열로 변환해서 정렬한 후,
다시 char형 배열을 문자열로 변환한다.
구현
1) 배열 사용
import java.util.*;
public class Main {
public boolean solution(String s){
int[] arr = new int[30];
for(int i=0; i<s.length(); i++){
int pos = s.charAt(i)-97;
arr[pos] += 1;
}
for(int i=0; i<26; i++){
if(arr[i] >= 2){
return true;
}
}
return false;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.println(T.solution(str));
}
}
2) 배열 사용 X
import java.util.*;
public class Main {
public boolean solution(String s){
char[] stringToChar = s.toCharArray();
Arrays.sort(stringToChar);
String sortedStr = new String(stringToChar);
for(int i=0; i<sortedStr.length()-1; i++){
if(sortedStr.charAt(i) == sortedStr.charAt(i+1)){
return true;
}
}
return false;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.println(T.solution(str));
}
}
피드백
- Java에서 문자열을 정렬할 때는, 문자열을 배열로 변환해서 정렬한 후,
다시 문자열로 변환해야 한다.
'PS' 카테고리의 다른 글
자바(Java) 알고리즘 문제 풀이 - 미로탐색(DFS) (0) | 2022.04.13 |
---|---|
코딩 인터뷰 완전 분석 1.5 하나 빼기 (0) | 2022.04.11 |
코딩 인터뷰 완전 분석 1.4 회문 순열 (2) | 2022.04.11 |
코딩 인터뷰 완전 분석 1.3 URL화 (0) | 2022.04.11 |
코딩 인터뷰 완전 분석 1.2 순열 확인 (0) | 2022.04.11 |