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

[Softeer] ์ „๊ด‘ํŒ - Java

category Algorithm/Softeer 2023. 5. 11. 21:47

https://softeer.ai/practice/info.do?idx=1&eid=624&sw_prbl_sbms_sn=184621 

 

Softeer

์—ฐ์Šต๋ฌธ์ œ๋ฅผ ๋‹ด์„ Set์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”. ์ทจ์†Œ ํ™•์ธ

softeer.ai


1. ๋ฌธ์ œ

A๋ฅผ B๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์Šค์œ„์น˜๋ฅผ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š”๊ฐ€?

 

2. ํ’€์ด

๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค. ์•„์ด๋””์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค

1. A, B๋ฅผ ๊ฐ๊ฐ String ํ˜•ํƒœ๋กœ ์ž…๋ ฅ ๋ฐ›๊ณ , ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ถ€ํ„ฐ int ํ˜•ํƒœ๋กœ Aํ, Bํ์— ๊ฐ๊ฐ ๋„ฃ๋Š”๋‹ค.

2. Aํ์™€ Bํ๊ฐ€ ๋‘˜ ๋‹ค ๋น„์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ฐ ํ์—์„œ pollํ•ด์„œ ๋‚˜์˜จ ์ˆซ์ž๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋˜๊ณ ,

๊ฐ๊ฐ์˜ ์ธ๋ฑ์Šค์˜ num ๋ฐฐ์—ด์—์„œ 0๋ถ€ํ„ฐ 6๊นŒ์ง€์˜ ์ด์ฐจ์› ๋ฐฐ์—ด ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ans๋ฅผ 1 ๋Š˜๋ ค์ค€๋‹ค.

3. Aํ๋Š” ๋น„์—ˆ๊ณ  Bํ๊ฐ€ ๋น„์ง€ ์•Š์•˜๋‹ค๋ฉด Bํ๋งŒ pollํ•˜์—ฌ ๋‚˜์˜จ ์ˆซ์ž๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ฐ€์ง€๋Š” num๋ฐฐ์—ด์˜ 0~6๊นŒ์ง€ ๊ฐ’์ด 1์ด๋ฉด ans๋ฅผ 1 ๋Š˜๋ ค์ค€๋‹ค.

4. Aํ๊ฐ€ ๋น„์ง€ ์•Š์•˜๊ณ  Bํ๊ฐ€ ๋น„์—ˆ์„ ๋•Œ๋„ ์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

3. ์ฝ”๋“œ

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


public class Main
{
    static int T, ans, lenA, lenB, nowA, nowB, turn;
    static String A, B;
    static Queue<Integer> Aq, Bq;
    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));
        StringTokenizer st = null;
        T = Integer.parseInt(br.readLine());
        for (int t=0; t<T; t++) {
            ans = 0;
            st = new StringTokenizer(br.readLine());
            A = st.nextToken();
            B = st.nextToken();

            Aq = new ArrayDeque<> ();
            Bq = new ArrayDeque<> ();
            lenA = A.length();
            lenB = B.length();
            turn = Math.max(lenA, lenB);
            for (int i=lenA-1; i>=0; i--) {
                Aq.offer(A.charAt(i) - '0');
            }
            for (int i=lenB-1; i>=0; i--) {
                Bq.offer(B.charAt(i) - '0');
            }

            solution();
            System.out.println(ans);
        }
    }

    static void solution() {
        ans = 0;
        while (turn-- > 0) {
            nowA = 0;
            nowB = 0;
            if (!Aq.isEmpty() && !Bq.isEmpty()) {
                nowA = Aq.poll();
                nowB = Bq.poll();
                for (int i=0; i<7; i++) {
                    if (num[nowA][i] != num[nowB][i]) ans++;
                }
            }
            else if (Aq.isEmpty() && !Bq.isEmpty()) {
                nowB = Bq.poll();
                for (int i=0; i<7; i++) {
                    if (num[nowB][i] == 1) ans++;
                }
            }
            else if (!Aq.isEmpty() && Bq.isEmpty()) {
                nowA = Aq.poll();
                for (int i=0; i<7; i++) {
                    if (num[nowA][i] == 1) ans++;
                }
            }
        }
    }
}

4. ์‚ฌ๋‹ด

๊ฐ€๊ณ ์‹ถ๋‹ค ์ œ๋ฐœ ๊ฐ€์ž ํ•  ์ˆ˜ ์žˆ๋‹ค