반응형
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
https://github.com/gayulz/StudyHistory.git
오늘의 문제
문제 해결 고민
- 대소문자를 구분하지 않는 다 라고한다.
- 입력값이 소문자와 대문자가 섞여있을 경우 전체 대문자로 바꾸자
- 비교하는 식을 고민해보자
나의 풀이
import java.util.Scanner;
class Main {
public String solution(String str) {
String answer = "";
String tmpStr = str.toUpperCase();
boolean flag = false;
int rtPoint = tmpStr.length()-1;
for (int i = 0; i < str.length(); i++) {
char tmp = tmpStr.charAt(i);
if ( i == tmpStr.length()/2 ){
break;
}
if (tmp == tmpStr.charAt(rtPoint)){
flag = true;
rtPoint--;
} else {
flag = false;
break;
}
}
if ( flag == false ) answer = "NO";
else if ( flag == true ) answer = "YES";
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String str = in.next();
System.out.println(T.solution(str));
}
}
쌤의 풀이
public class chapter_7 {
public String solution(String str){
String answer = "NO";
String tmp = new StringBuilder(str).reverse().toString();
if (str.equalsIgnoreCase(tmp)) answer = "YES";
// 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) {
Scanner in = new Scanner(System.in);
chapter_7 T = new chapter_7();
String str = in.nextLine();
System.out.println(T.solution(str));
}
}
0 | 1 | 2 | 3 |
---|---|---|---|
g | o | o | G |
회문 문자라는건 앞 뒤가 똑같은 단어를 말한다.
팰린드룸 이라고도 한다.
앞 뒤가 똑같기 때문에 length의 절반만 돌면 앞 뒤가 같은지 비교 할 수 있다.
gooG 문자열 같은 경우 인덱스가 총 4개 나누기 2 를 해서 절반만 비교하는데
lenght-1을 하여 반복 해서 같은지만 확인하면 된다.
짝수가 아닌 홀수인 경우에도 절반까지만 돌면 된다
예를들어
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
S | t | u | t | s |
인 경우 u를 가운데 두고 양 사이드에 글자들이 같은 지만 보면 되기 때문이다
int len = str.length();
for (int i = 0; i < len / 2; i++) {
if (str.charAt(i)!=str.charAt(len-i-1)) return "NO";
}
쌤의 경우 solution 메서드 안에 해당 for문을 먼저 사용하여 처리하였다.
또는 다른 방식을 알려주셨다
String tmp = new StringBuilder(str).reverse().toString();
if (str.equalsIgnoreCase(tmp)) answer = "YES";
equalsIgnoreCase 메서드
문자열을 비교하는 함수이다.
보통 equlsIgnoreCase는 대소문자 구분 없이 비교할때 주로 사용된다.
equals 는 대소문자를 비교하지만, equalsIgnoreCase는 대소문자 구별없이
문자열 자체만으로 비교한다고 한다.
문법 : equalsIgnoreCase( 문자열 )
반응형
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
Algorithm - 숫자만 추출 (1) | 2023.10.20 |
---|---|
Algorithm - 유효한 팰린드룸 (0) | 2023.10.18 |
Algorithm - 중복문자제거 (1) | 2023.10.10 |
Algorithm - 특정 문자 뒤집기 (0) | 2023.09.24 |
Algorithm - 단어 뒤집기 (1) | 2023.09.24 |