티스토리 뷰

아 참고로 저번에 -->가 통째로 연산자이겠거니 하고 착각했는데 후위감소 + 크기비교의 조합이었다는것을 갑자기 알았다... 생각좀 하라구~



문제는 단순한데 이상하게 애를 되게 먹었음.

하긴 뭐든 풀고나면 안단순해보이겠냐~


세 저항 string을 받고 비교 후 그에 알맞는 값을 처리해주면 된다.

문자열 비교는

처음에는 구조체를 만들어서 +값 *값 나눠받고 모조리 string 플러스 연산을 하려고 했는데, 

표를 보고 0의 숫자와 +값이 같음을 이용해야 함을 깨달았다.

또, 단순히 모두 string 처리하여 문자열 합산을 하기에는 무리인 부분이 있는데,

black은 값이 0이다.

만약 black black red면 0000이 출력된다. 

따라서 저항값을 int로 받아 처리하였다.

result = (저항1 * 10 + 저항2) * 10(필요한만큼 반복)


아 그리고, 문자열 받는 것은 string을 모조리 매번 비교하기에는 연산 소모량이 커서

첫번째 char 비교 + 필요하면 2-3번째 부가적 비교를 하게 하여 절대로 전체 string을 매번 비교하게 하지는 않았다.


아 또... 결과 result는 int가 아니라 더 큰 값을 포용할 수 있는 자료형을 이용하자. 이거때문에 삽질 많이했음

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

using System.Threading.Tasks;


namespace ConsoleApp1

{

    class Program

    {

        static void Main(string[] args)

        {

            BufferedStream bs = new BufferedStream(Console.OpenStandardInput());

            StreamReader sr = new StreamReader(bs);

            StringBuilder sb = new StringBuilder();


            string[] resistance = new string[3] { sr.ReadLine(), sr.ReadLine(), sr.ReadLine() };

            int[] num = new int[3];

            for(int i = 0; i <3; i++)

            {

                switch (resistance[i][0])

                {

                    case 'b':

                        if (resistance[i][1].Equals('l'))

                        {

                            if (resistance[i][2].Equals('a'))

                                num[i] = 0;

                            else

                                num[i] = 6;

                        }

                        else

                            num[i] = 1;

                        break;

                    case 'r': num[i] = 2; break;

                    case 'o': num[i] = 3; break;

                    case 'y': num[i] = 4; break;

                    case 'g':

                        if (resistance[i][3].Equals('e'))

                            num[i] = 5;

                        else

                            num[i] = 8;

                        break;

                    case 'v': num[i] = 7; break;

                    case 'w': num[i] = 9; break;

                }

            }

            long result = num[0] * 10 + num[1];

            while (num[2]-- > 0)

                result *= 10;

            Console.WriteLine(result);

        }

    }

}



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함