Count IP Addresses (5 kyu)

Mark Lee·2021년 12월 21일
0

CodeWars

목록 보기
8/12

https://www.codewars.com/kata/526989a41034285187000de4/csharp

이번 문제도 5kyu스럽지 않은 간단한 산술 문제이며, C#으로 구현했습니다.
2개의 IP주소를 주고, 그 범위 사이에 몇 개의 IP주소가 있는지 세어서 반환하라는 문제입니다.

10.0.0.0, 10.0.0.50이 주어지면, 두 번째를 포함하지 않기에 50을 반환하면 됩니다.

풀이도 단순하게 ip 주소의 각 항을 빼서 더하되, order를 256 x 256 x 256에서 시작하여, 단계를 마다 256를 나누어 order를 조절하는 부분이 중요합니다.

IP 주소의 체계를 이해하거나, 아니면 .NET 의 network관련 라이브러리IPAddress.NetworkToHostOrder를 사용하면 조금 더 간단하게 할 수 있는데 이 부분을 물어보는 문제가 아닌가 싶습니다.
저는 그냥 파싱해서 풀었습니다.

최근 몇 일 계속 추천으로 걸리는 문제가 간단한 문제만 나오네요.

    public class CountIPAddresses
    {
        public static long IpsBetween(string start, string end)
        {
            long ret = 0;

            string[] f1 = start.Split('.');
            string[] f2 = end.Split('.');

            long order = 256 * 256 * 256;
            for (int i = 0; i < 4; ++i)
            {
                long i1 = long.Parse(f1[i]);
                long i2 = long.Parse(f2[i]);

                long d = i2 - i1;

                ret += d * order;
                order/= 256;
            }

            return ret;
        }
    }
profile
C++/C#, Python을 주로 사용하는 개발자입니다. Engineering 알고리즘 개발을 주 업무로 하고 있습니다.

0개의 댓글