Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_유효한 팰린드롬) 본문
https://cote.inflearn.com/contest/10/problem/01-08
(위의 링크는 인프런 로그인 후, 해당 강의를 사지 않으면 접속이 되지 않습니다)
8. 유효한 팰린드롬
예시 입력 1
found7, time: study; Yduts; emit, 7Dnuof
예시 출력 1
YES
내가 푼 풀이 (Time: 178ms Memory: 27MB)
그동안 배운걸 사용하면서 문제를 풀었다1. Character.isAlphabetic을 사용해서 알파벳만 StringBuilder로 담는다.2. 대문자로만 바꾼 String을 순회할때 길이를 절반 자르고 각 인덱스 값을 비교한다.
import java.util.Scanner;
public class Main {
public String solution(String str) {
String ans = "YES";
char[] charArray = str.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charArray.length; i++) {
if (Character.isAlphabetic(charArray[i])) {
sb.append(charArray[i]);
}
}
String onlyString = sb.toString().toUpperCase();
int len = onlyString.length();
for (int i = 0; i < len / 2; i++) {
if (onlyString.charAt(i) != onlyString.charAt(len - i - 1)) {
ans = "NO";
}
}
return ans;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(main.solution(str));
}
}
강의 답안 (Time: 159ms Memory: 27MB)
- replaceAll()과 정규표현식으로 필요없는 문자를 제거하고 알파벳만 남겼다.
import java.util.Scanner;
public class Main {
public String solution(String str) {
String ans = "NO";
str = str.toUpperCase().replaceAll("[^A-Z]", "");
String tmp = new StringBuilder(str).reverse().toString();
if (str.equals(tmp)) ans = "YES";
return ans;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(main.solution(str));
}
}
'알고리즘 > 인프런 - Java알고리즘 입문' 카테고리의 다른 글
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_가장 짧은 문자거리) (0) | 2023.08.28 |
---|---|
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_숫자만 추출) (0) | 2023.08.28 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_회문 문자열) (0) | 2023.08.28 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_중복 문자 제거) (0) | 2023.08.28 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_특정 문자 뒤집기) (0) | 2023.08.27 |