//내 코드
import java.util.Scanner;
public class Main {
public String solution(String str){
str=str.toUpperCase();
char[] chars = str.toCharArray();
String tmp="";
for(int i=0; i<chars.length;i++){
if(Character.isAlphabetic(chars[i])){
tmp+=String.valueOf(chars[i]);
}
}
char[] answer = tmp.toCharArray();
int len=answer.length;
for(int i=0;i<len/2;i++){
if(answer[i]!=answer[len-1-i]){
return "NO";
}
}
return "YES";
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
입력값:
found7, time: study; Yduts; emit, 7Dnuof
입력값이 회문 문자열인지 판단하는 문제였다.(오직 알파벳만으로 판단)
1. 입력값을 char배열로 만들고
2. 알파벳이면 String tmp에 담았다.(tmp도 char배열로 한다면 길이를 정해줘야하기때문에 특수문자가 몇개 들어올지 모르는 상황이라서 배열로 선언할 수 없고 String에 넣어준후 char배열로 바꿔주었다.)
3. tmp를 [char배열 anwer]에 담았다.
4. answer을 회문 문자열인지 판단하는 것이기 때문에 굳이 answer.length만큼 for문을 돌릴필요가 없다.
좌우 대칭인지 확인만하면 되기때문에 절반만 비교하면된다.(문자열의 대칭을 비교하면된다.(예:1221이면 i=1,i=2까지만 하면 대칭인지 확인할 수 있다.)
5.if문에서 서로 대칭이 아닌 문자가 있다면 "NO"를 반환한다.
//인프런코드
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.입력받은 값 s를 대문자로 바꾸고 replaceAll로 알파벳이 아닌 문자는 ""로 없애버린다(자바 정규식을 사용)
2.tmp라는 비교를 위한 값을 만들고 tmp에 s를 담는다. 이후 tmp.reverse로 문자를 뒤집고 .toString으로 문자로 출력한다.(문법이라고 생각하면 된다. .toString을 안쓰면 문자로 안된다. 그냥 StringBuilder형식이다)
3.[입력받고 알파벳이 모두 제거된 s]와 [그 s를 뒤집은 tmp]가 같다면 서로 대칭이기 때문에 회문 문자열이기때문에
YES이고 아니면 NO이다.
repaceAll,정규식의 중요성을 알게되는 문제였다.
자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
'2022 > 코딩테스트' 카테고리의 다른 글
[인프런] 자바 알고리즘 문제풀이 멘토링_12 (0) | 2022.08.31 |
---|---|
인프런 코딩테스트 강의 메모 - 회문문자열 (0) | 2022.07.14 |
인프런 코딩테스트 강의 메모 - 단어뒤집기 (0) | 2022.07.08 |
인프런 코딩테스트 강의 메모 - 대소문자변환 (0) | 2022.07.07 |