[코딩문제] 팰린드롬 구하기

Hong Un Taek·2021년 7월 28일
0

코딩테스트

목록 보기
3/3

프로그래머스 리액트개발자 채용 2주차

팰린드롬 구하기


문제 설명

앞에서부터 읽을 때 뒤에서부터 읽을 때 똑같은 단어를 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, 10201은 펠린드롬입니다.
두 자연수 n, m이 매개변수로 주어질 때, n 이상 m이하의 자연수 중 팰린드롬인 숫자의 개수를 return 하도록 solution 함수를 완성해야 합니다.

제한사항
m은 500, 000이하의 자연수이며, n은 m이하의 자연수입니다.

나의 문제풀이

let answer = 0;

function solution(n, m){
    if(n>m) return;
    for(let i=n; i<=m; i++){
        checkPalindrome(String(i));
    }
    return answer;
}
    function checkPalindrome(num){
        if(num.length ===1){
            answer++;
            return;
        }
        let j = num.length - 1;
        let jSize = parseInt(num.length/2);
        let count = 0;
        for(let i = 0; i<jSize; i++,j--){
            if(num.charAt(i) === num.charAt(j)){
                count++;
            }
        }
        if(count === jSize){
            answer++;
        }
    }

solution함수에서
let i의 값은 매개변수로받은 n값이고 i는 m(주어진 수의 범위중 max범위)
까지 반복문을 사용하였고 checkPalindrome함수를 실행시킨다.

checkPalindrome함수에서
조건문을 이용해 매개변수로 받은 numlength가 1일때는 answer(개수)
를 추가해주고 리턴시킨다(1의 자리숫자들은 팰린드롬을 하나씩 가지기때문)

인덱스값을 비교하는 조건문을 사용하기위해
1부터 시작되는 length의 값에서 -1을 한
let j = num.length-1

앞뒤로 모든쌍이 팰린드롬이 맞는지 판별하기위한 인덱스를 설정해주기위해
let jSize = num.length/2

한 쌍의 팰린드롬이 맞을때 ++시켜줄
let count = 0;

각각 변수로 설정해주었다.
다음 jSize값의 횟수만큼 반복문을 실행시켜주었는데
여기서 조건문을 추가해주었다.
numcharAt을 사용하여 앞뒤의 팰린드롬이 맞는지. 맞다면
count++을 해준다.

for반복문을 벗어나서 또 다른 조건문을 추가해주었는데
팰린드롬의 개수가 들어있는 countjSize를 비교하고
같을 경우에 비로소 answer(개수)를 추가시켜준다.

처음엔 count를 설정안해줘서 모든쌍이 팰린드롬이 맞는지 판별이 안되고 answer를 추가해주는바람에 오답이 나왔고 count를 추가해주니 문제가 생기지 않았다.

profile
cherrycock's Velog

0개의 댓글

관련 채용 정보