인프런 커뮤니티 질문&답변

australialove19님의 프로필 이미지

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

7. 회문문자열

저는 이렇게 풀어봤는데 왜 정답이 아닌지 모르겠어요 ㅠㅠ

21.10.04 16:15 작성

·

320

0

package main;

import java.util.Scanner;

public class Main {
public String solution(String str) {
String answer = "YES";
str = str.toUpperCase();

int lt = 0, rt = str.length() - 1;
char[] ch = str.toCharArray();

while (lt < rt) {
char tmp = ch[rt];
ch[rt] = ch[lt];
ch[lt] = tmp;
lt++;
rt--;
}

if (String.valueOf(ch) != str) {
answer = "NO";
}
return answer;
}

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
Main T = new Main();
System.out.println(T.solution(str));
}


}

답변 2

0

australialove19님의 프로필 이미지

2021. 10. 05. 00:30

질문 후 30분 뒤에 깨달았어요 ㅠㅠ 문자열 비교는 equals! 뼈에 새기겟습니다..!

0

김태원님의 프로필 이미지
김태원
지식공유자

2021. 10. 04. 23:29

안녕하세요^^

string 과 문자배열은 문자열 비교가 안됩니다. 아래와 같이 바꿔야 합니다.

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        String answer = "YES";
        str = str.toUpperCase();
        
        int lt = 0, rt = str.length() - 1;
        char[] ch = str.toCharArray();
        
        while (lt < rt) {
            char tmp = ch[rt];
            ch[rt] = ch[lt];
            ch[lt] = tmp;
            lt++;
            rt--;
        }
		String tmp = new String(ch);
        if (!str.equals(tmp)) {
            answer = "NO";
        }
        return answer;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        Main T = new Main();
        System.out.println(T.solution(str));
    }


}