728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/01-08
- 간단한 문제 설명 : 알파벳을 제외한 문자들은 무시하고 대소문자를 구분하지 않고 펠린드롬인지 아닌지 판별
내 풀이
- 입력된 문자열을 대문자로 변환
- Character.isAlphabetic()메서드를 사용하여 알파벳인 경우에만 문자를 비교
import java.io.*;
public class Main {
public String solution(String s) {
char[] chars = s.toUpperCase().toCharArray();
int left = 0;
int right = chars.length -1;
while (left < right) {
if (!Character.isAlphabetic(chars[left])) {
left++;
continue;
}
if (!Character.isAlphabetic(chars[right])) {
right--;
continue;
}
if (chars[left] != chars[right]) {
return "NO";
}
left++; right--;
}
return "YES";
}
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));
}
}
강의 풀이
- s=s.toUpperCase().replaceAll("[^A-Z]", "");
- 입력한 문자열을 대문자로 변환
- String 클래스의 replaceAll()메서드에 정규식을 사용하여 알파벳 대문자를 제외한 모든 문자 제거
- StringBuilder의 reverse() 메서드를 사용하여 입력된 문자열을 뒤집어 원래 문자열과 같은지 비교
import java.util.*;
class Main {
public String solution(String s){
String answer="NO";
s=s.toUpperCase().replaceAll("[^A-Z]", "");
String tmp=new StringBuilder(s).reverse().toString();
if(s.equals(tmp)) answer="YES";
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.nextLine();
System.out.print(T.solution(str));
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘/인프런]1-10 가장 짧은 문자거리(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.09 |
---|---|
[알고리즘/인프런]1-9 숫자만 추출(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.06 |
[알고리즘/인프런]1-7 회문문자열(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.05 |
[알고리즘/인프런]1-6 중복문자 제거(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.05 |
[프로그래머스] 124나라의 숫자 java (0) | 2020.12.13 |
댓글