알고리즘

[JS] 알고리즘 기초 정복 3-1번_회문 문자열

햄❤️ 2021. 7. 15. 19:37
반응형

문제 3-1번

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력 하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.

 

🍄 입력설명

첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

 

🍄 출력설명

첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.

 

🍄 입력예제 1

gooG

 

🍄 출력예제 1

YES

 


정답 코드

1) for문 탐색

function solution(s) {
	let answer = "YES";
	s = s.toLowerCase();
	let n = s.length;
    //배열의 반만 돌면 되니까, 길이의 반만 for문을 돌려준다.
    //회문의 특성은 맨 앞 = 맨 뒤 숫자가 같다는 것
	for (let i = 0; i < Math.floor(n / 2); i++) {
		if (s[i] !== s[n - i - 1]) return "NO";
        //만약 위 조건이 성립한다면 answer(YES)가 출력될 것
		return answer;
	}
}

let str = "gooG";
console.log(solution(str));
//YES 출력

 

2) s.split("") 문자열 s를 배열로 만들어 줌
    reverse() 메서드는 배열의 순서 반전
    join("") 배열의 모든 요소를 연결해 새 문자열 반환

function solution(s) {
	let answer = "YES";
	s = s.toLowerCase();
	//s.split("")문자열 s를 배열로 만들어 줌
    //reverse()메서드는 배열의 순서 반전
    // join("") 배열의 모든 요소를 연결해 새 문자열 반환
	if (s.split("").reverse().join("") !== s) return "MO";
return answer;
}
let str = "gooG";
console.log(solution(str));
//YES 출력
728x90
반응형