알고리즘 단련장/소프티어

[소프티어] 전광판 레벨2 자바 풀이 (21년 재직자 대회 예선)

snapcoder 2024. 7. 19. 01:59
728x90
반응형
SMALL

[소프티어] 전광판 레벨2 자바 풀이 (21년 재직자 대회 예선)

https://softeer.ai/practice/6268

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

 

 

 

 

 

 

빈칸, 0, 1, ..., 9까지 총 11개를 노가다로...

그래도 다른분들 어떻게 풀었나 찾아보니 내가 제일 간단하게 푼거같았다.

 

 

 

 

 

 

 

핵심코드

String 문자열 왼쪽부터 채우기

String 문자열 왼쪽부터 공백으로 채우기

String 문자열 왼쪽부터 0으로 채우기

를 기억해두자.

String aa = String.format("%5d", a); // 왼쪽부터 5개 공백 채우기
String bb = String.format("%5d", b); // 왼쪽부터 5개 공백 채우기

String aa = String.format("%05d", a); // 왼쪽부터 5개 0으로 채우기
String bb = String.format("%05d", b); // 왼쪽부터 5개 0으로 채우기

 

 

 

 

 

전체 코드

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());

        Map<Character, String> t = new HashMap<Character, String>();
        t.put(' ', "0000000");
        t.put('0', "1110111");
        t.put('1', "0010100");
        t.put('2', "0111011");
        t.put('3', "0111110");
        t.put('4', "1011100");
        t.put('5', "1101110");
        t.put('6', "1101111");
        t.put('7', "1110100");
        t.put('8', "1111111");
        t.put('9', "1111110");

        
        for(int i=0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            String aa = String.format("%5d", a); // 왼쪽부터 5개 공백 채우기
            String bb = String.format("%5d", b); // 왼쪽부터 5개 공백 채우기

            int sum = 0;
            for(int j=0; j<aa.length(); j++){
                Character aaa = aa.charAt(j);
                Character bbb = bb.charAt(j);

                String sa = t.get(aaa);
                String sb = t.get(bbb);
                // System.out.println("sa.charAt(k)---------" + sa);
                // System.out.println("sb.charAt(k)---------" + sb);
                int diff = 0;
                for(int k=0; k<sa.length(); k++){
                    if( sa.charAt(k) != sb.charAt(k)){
                        diff++;  
                    }
                }
                // System.out.println("diff---------" + diff);
                sum += diff;
            }
            // System.out.println();System.out.println();
            bw.write(String.valueOf(sum));
            bw.newLine();
        }
        
        bw.close();
    }
}

 

728x90
반응형
LIST