๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://softeer.ai/practice/result.do?eventIdx=1&submissionSn=SW_PRBL_SBMS_178457&psProblemId=624#hold 

 

https://softeer.ai/practice/result.do?eventIdx=1&psProblemId=624&submissionSn=SW_PRBL_SBMS_178457#hold

 

softeer.ai


1. ๋ฌธ์ œ

8์ž ๋ชจ์–‘์˜ 7๊ฐœ์˜ ์ „๊ตฌ๊ฐ€ ์žˆ๋‹ค. ์ง€๊ธˆ ์ด ์ „๊ด‘ํŒ์— ์ž์—ฐ์ˆ˜ A๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ž์—ฐ์ˆ˜ B๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

์ „๊ตฌ๊ฐ€ ์ผœ์ ธ์žˆ์œผ๋ฉด ๋„๊ณ , ๊บผ์ ธ์žˆ์œผ๋ฉด ์ผœ์•ผํ•˜๋ฉฐ ์ „๊ตฌ๋งˆ๋‹ค ์Šค์œ„์น˜๊ฐ€ ๋‹ฌ๋ ค์žˆ๋‹ค.

ํ˜„๋Œ€์ฐจ๊ทธ๋ฃน์— ๋‹ค๋‹ˆ๋Š” ๋‹น์‹ ์€ ์Šค์œ„์น˜๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

2. ํ’€์ด

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ์ด๋‹ค.

- 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์„œ ๊ตฌํ–ˆ๋‹ค.

- num[][] ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ฐ ์ˆซ์ž๋งˆ๋‹ค(0~9), ์ „๊ตฌ๋งˆ๋‹ค(0~6) ์ผœ์ง1,๊บผ์ง0์„ ์ €์žฅํ–ˆ๋‹ค.

 

์ž์—ฐ์ˆ˜ A -> ์ž์—ฐ์ˆ˜ B

1. A๊ธธ์ด < B๊ธธ์ด

 - 0~(A๊ธธ์ด-1) ๋งŒํผ ์ž๋ฆฌ๋ณ„ ๋น„๊ต

 - A~(B๊ธธ์ด-1) ๋งŒํผ B๋งŒ ์ž๋ฆฌ๋ณ„ ๋ถˆํ‚ค๋Š” ํšŸ์ˆ˜

 

2. A๊ธธ์ด == B๊ธธ์ด

- 0~(A๊ธธ์ด-1) ๋งŒํผ ์ž๋ฆฌ๋ณ„ ๋น„๊ต

 

3. A๊ธธ์ด > B๊ธธ์ด

 - 0~(B๊ธธ์ด-1) ๋งŒํผ ์ž๋ฆฌ๋ณ„ ๋น„๊ต

 - A~(A๊ธธ์ด-1) ๋งŒํผ A๋งŒ ์ž๋ฆฌ๋ณ„ ๋ถˆํ‚ค๋Š” ํšŸ์ˆ˜

 

2์‹œ๊ฐ„ 20๋ถ„ ๊ฑธ๋ ธ๋‹ค.

์ด๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์ด์œ ๋Š”

num[][] ์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์ˆซ์ž9์˜ ์ƒํƒœ๋ฅผ ์ž˜๋ชป ์ €์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (^^)

์ˆ˜์ • ์ „ ํ‹€๋ฆฐ 9

   0 1 2 3 4 5 6

  {1,1,1,1,0,1,1}   (9์˜ ์ƒํƒœ๋งŒ ํ‹€๋ ธ๋Š”๋ฐ 10์ ์ด ๋‚˜์™”๋‹ค.)

์ˆ˜์ • ํ›„ ๋งž์€ 9

   0 1 2 3 4 5 6

  {1,1,1,0,1,1,1} 

 

3. ์ฝ”๋“œ

import java.util.*;
import java.io.*;


public class Main
{
    static int T;
    static char[] A, B;
    static int[][] num = {
       //0 1 2 3 4 5 6
        {1,1,1,1,1,1,0}, //0
        {0,1,1,0,0,0,0}, //1
        {1,1,0,1,1,0,1}, //2
        {1,1,1,1,0,0,1}, //3
        {0,1,1,0,0,1,1}, //4
        {1,0,1,1,0,1,1}, //5
        {1,0,1,1,1,1,1}, //6
        {1,1,1,0,0,1,0}, //7
        {1,1,1,1,1,1,1}, //8
        {1,1,1,1,0,1,1}  //9
    };

    public static void main(String args[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        T = Integer.parseInt(br.readLine());
        for (int t = 0; t<T; t++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            StringBuilder sb = new StringBuilder();
            sb.append(st.nextToken());
            String strA = sb.reverse().toString();

            sb = new StringBuilder();
            sb.append(st.nextToken());
            String strB = sb.reverse().toString();

            A = strA.toCharArray();
            B = strB.toCharArray();
            int lenA = strA.length();
            int lenB = strB.length();
            int ans = 0;

            if (lenA < lenB) {
                for (int i=0; i<lenA; i++) {
                    int nowA = A[i]-'0';
                    int nowB = B[i]-'0';
                    ans += change(nowA, nowB);
                }
                for (int i=lenA; i<lenB; i++) {
                    int nowB = B[i]-'0';
                    for (int j=0; j<7; j++) {
                        if (num[nowB][j] == 1) ans++;
                    }
                }
            }
            else if (lenA == lenB) {
                for (int i=0; i<lenA; i++) {
                    int nowA = A[i]-'0';
                    int nowB = B[i]-'0';
                    ans += change(nowA, nowB);
                }
            }
            else if (lenA > lenB) {
                for (int i=0; i<lenB; i++) {
                    int nowA = A[i]-'0';
                    int nowB = B[i]-'0';
                    ans += change(nowA, nowB);
                }
                for (int i=lenB; i<lenA; i++) {
                    int nowA = A[i]-'0';
                    for (int j=0; j<7; j++) {
                        if (num[nowA][j] == 1) ans++;
                    }
                }
            }
            System.out.println(ans);
        }
    }

    static int change(int nowA, int nowB) {
            int cnt = 0;
            for (int i=0; i<7; i++) {
                if (num[nowB][i] == 0) {
                    if (num[nowA][i] == 1) {
                        cnt++;
                    }
                }
                else if (num[nowB][i] == 1) {
                    if (num[nowA][i] == 0) {
                        cnt++;
                    }
                }
            }
            return cnt;
        }
}

4. ์‚ฌ๋‹ด

์กฐ๊ธˆ๋งŒ ๋” ํ•ด๋ณด์ž ๊ฐ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์•„์ž์ขŒ