코딩테스트 (C#)

백준 10988 : 팰린드롬인지 확인하기 - C# 풀이

UniCoti-sub 2024. 12. 9.
반응형

문제사진

이번 문제는 어떤 단어가 주어졌을 때 "팰린드롬"이면 1을, 아니면 0을 출력하면 되는 문제이다.

팰린드롬이란, 뒤에서부터 읽어도 변하지 않는 문자를 말한다. 영어로는 level, noon 등이 있을 것이고

한국어로는 기러기, 토마토, 스위스, 우영우 등이 있겠다.

 

using System;

namespace unicoti {
    class Program {
        static void Main(string[] args) {
            string input = Console.ReadLine() ?? "";
            int repeatCount = (int)Math.Floor(input.Length / 2.0);
                
            for (int i = 0; i < repeatCount; i++) {
                if (input[i] != input[input.Length - 1 - i]) {
                    Console.WriteLine("0");
                    return;
                }
            }
            
            Console.WriteLine("1");
        }
    }
}

 

내가 만든 코드는 이와 같다.

먼저 for문으로 일정한 횟수동안 제일 바깥쪽에서부터 안쪽으로 가면서 확인하여

틀린 곳이 발견되면 곧바로 0을 출력하고 return 시켜 뒤쪽 코드가 실행되지 않게 하고

발견되지 않은 경우 기본적으로 1을 출력하여 쉽게 구분시켰다.

 

또 하나의 변수를 만들어서 if문을 사용했어도 되겠으나 return으로

쉽게 구역을 나눠서 구분시킬 수 있었다.

 

횟수는 문자열의 길이를 2로 나누고, 소수점을 없애면 된다.

이건 5의 길이를 가진 문자를 상상한 다음 일반화 시킨 알고리즘이다.

 

뒤쪽 인덱스는 input.Length-1-i로 구현했다. 

이것도 예시를 떠올려보면 쉽게 이해가 될 것이다.


오늘의 느낀점)

return으로 일부 if문의 생략이 가능하다.

물론 작은 프로그램에서만 적용 가능할 것 같지만 말이다.

시험이 끝나고 또 오랜만에 한 문제를 풀어봤는데, 아직 머리가 남아있는 것 같다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형

댓글