코딩테스트 연습 - 전화번호 목록 | 프로그래머스 스쿨 (programmers.co.kr)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace _230120_1
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());            

            string[] phone_book0 = { "119", "97674223", "1195524421" };
            string[] phone_book1 = { "123", "456", "789" };
            string[] phone_book2 = { "12", "123", "1235", "567", "88" };

            sw.WriteLine(solution(phone_book0));
            sw.WriteLine(solution(phone_book1));
            sw.WriteLine(solution(phone_book2));

            sr.Close();
            sw.Flush();
            sw.Close();
        }

        static bool solution(string[] arr)
        {
            List<int> phoneNumber = new List<int>();
            List<int> allNumber = new List<int>();
            bool isTrue = true;

            for (int i = 0; i < arr.Length; i++) // 문자열 배열 검사
            {
                for(int j = 0; j < arr[i].Length; j++) // 배열내부의 문자열 검사
                {
                    string str = "";
                    for (int k = 0; k <= j; k++) // 문자열을 0부터 j까지 조합
                    {
                        str += arr[i][k];
                    }

                    if (j == arr[i].Length - 1) // 문자열의 마지막(전화번호)를 리스트에저장
                    {
                        phoneNumber.Add(int.Parse(str));
                    }
                    else
                    {
                        allNumber.Add(int.Parse(str)); // 모든 숫자조합 저장(같은 전화번호는 없다)
                    }                                          
                }
            }

            foreach(int number in allNumber)
            {
                if (phoneNumber.Contains(number)) // 전화번호 리스트가 숫자조합 중 포함하는 수가 있다면 거짓
                {
                    isTrue = false;
                    break;  //불필요한 연산을 멈춤
                }
            }

            return isTrue;
        }
    }
}

+ Recent posts