-
[JAVA] 알고리즘 문제 - 회문 문자열Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 5. 30. 22:38반응형
회문 문자열
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는
프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
package chap1; import java.util.Scanner; public class chap1_solution03 { public String ex_solution03(String str){ String answer = "YES"; str=str.toUpperCase(); int len = str.length(); for(int i=0; i<len/2; i++){ if(str.charAt(i)!= str.charAt(len-i-1)){ return "NO"; } } return answer; } public static void main(String[] args){ chap1_solution03 T = new chap1_solution03(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex_solution03(str)); } }
public static void main(String[] args){ chap1_solution03 T = new chap1_solution03(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex_solution03(str)); }
Scanner를 통해 해당 문자열을 받아온다.
public String ex_solution03(String str){ String answer = "YES"; str=str.toUpperCase();
호출하는 과정에 입력받은 str를 매개변수로 넘겨받고 answer에 "YES"라는 값을 설정해준다.
그리고 대소문자를 구분하지 않는다고 하였으니 toUpperCase()를 통해 모두 대문자로 만들어주자.
int len = str.length(); for(int i=0; i<len/2; i++){ if(str.charAt(i)!= str.charAt(len-i-1)){ return "NO"; } } return answer;
입력받은 문자열의 길이를 len으로 설정한다. for문을 돌며 맨처음과 맨 마지막이 같은지 비교하는데
만약 gooG를 입력하였다면 toUpperCase를 통해
G O O G 이와같은 문자열이 되어들어온다.
우리는 문자열을 반으로 나눈 후에 처음과 끝 양쪽을 비교해주면된다.
이때 len = 4로 설정되고 처음과 맨 끝을 비교해야하니 0번째 인덱스와 3번째 인덱스를 비교해야한다
i는 0부터 시작하므로 첫번째 인덱스에 대입하고 마지막에는 문자열의 길이를 설정한것에서 -i -1을 해주어야한다.
for문을 반복하면서 i값이 커져 처음에는 0번째와 3번째를 비교하게되고
다음으로는 1번째와 2번째를 비교하게된다.
여기서 비교한 결과값이 다르다면 return "NO"를 반환시킨다.
G O U O G 만약 이와같은 홀수갯수를 가진 문자열을 입력받는다면
똑같이 0번째 인덱스와 마지막 인덱스
첫번재 인덱스와 마지막 -1 인덱스를 비교하고 문자열을 /2한 값보다 i가 커지므로 for문이 종료된다.
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 암호 해독하기 (0) 2023.08.09 [JAVA] 알고리즘 문제 문자열 압축 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 유효한 팰린드롬 (1) 2023.05.30 [Java] 알고리즘 - 중복된 문자 제거 (1) 2023.05.17 [Java] 알고리즘 문제 - 특정 문자 뒤집기 (0) 2023.05.17