[Softeer] Java - level2 문제풀이(전광판)

2023. 2. 10. 20:45·개발자 세릴리/코딩테스트
728x90
반응형
 

softeer 전광판(Java)

[문제]

현대차그룹에 다니는 당신은 전세계 유가 변동에 대해 실시간으로 파악하기 위해 사무실에 유가를 실시간으로 표시하는 전광판을 설치하였다. 전광판은 최대 다섯 자리의 자연수만을 표시할 수 있도록, 아래와 같이 육각형 모양의 전구 7×5=35개로 구성되어 있다.

 

 

8자 모양의 전구 묶음은 0부터 9까지의 숫자를 표현할 수 있으며, 표현 방법은 아래와 같다. 아래 그림에서 전구가 켜졌으면 검정색, 꺼졌으면 옅은 회색으로 표현되었다.

 

 

예를 들어, 전광판을 통해 9881를 표현하면 아래와 같다. 만의 자리 수가 없기 때문에, 만의 자리에 해당하는 전구들이 모두 꺼져 있음에 유의하라.

 

 

예를 들어, 전광판을 통해 10724를 표현하면 아래와 같다.

 

 

 

각각의 전구에는 스위치가 달려 있다. 전구에 달려 있는 스위치를 누를 때, 그 전구가 켜져 있었다면 꺼지고, 그 전구가 꺼져 있었다면 켜진다.

 

지금 전광판에 자연수 A가 표시되어 있는데, 유가가 변동됨에 따라 전광판에 표시된 자연수를 B로 바꿔야 한다. 이러한 목표를 달성하기 위해 스위치를 최소 몇 번 눌러야 하는지를 구하는 프로그램을 작성하라.

 
[제약조건]

하나의 입력에서 1개 이상 1000개 이하의 테스트 케이스를 해결해야 한다.

A와 B는 한 자리 이상 다섯 자리 이하의 자연수이다.

A와 B는 숫자 0으로 시작하지 않는다.

A와 B는 서로 다르다.

 
[입력형식]

첫 번째 줄에 해결할 테스트 케이스의 수 T가 주어진다.

다음 T개의 줄에는 한 줄에 테스트 케이스 하나씩이 주어진다. 각각의 줄에는 두 자연수 A와 B가 공백 하나를 사이로 두고 주어진다.

 
[출력형식]

각각의 테스트 케이스마다 순서대로, 스위치를 눌러야 하는 최소 횟수를 한 줄에 하나씩 출력한다.

 

[풀이]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        List<int[]> numberPosition = new ArrayList<>();
        numberPosition.add(new int[]{1, 1, 1, 0, 1, 1, 1});
        numberPosition.add(new int[]{0, 0, 1, 0, 0, 1, 0});
        numberPosition.add(new int[]{1, 0, 1, 1, 1, 0, 1});
        numberPosition.add(new int[]{1, 0, 1, 1, 0, 1, 1});
        numberPosition.add(new int[]{0, 1, 1, 1, 0, 1, 0});
        numberPosition.add(new int[]{1, 1, 0, 1, 0, 1, 1});
        numberPosition.add(new int[]{1, 1, 0, 1, 1, 1, 1});
        numberPosition.add(new int[]{1, 1, 1, 0, 0, 1, 0});
        numberPosition.add(new int[]{1, 1, 1, 1, 1, 1, 1});
        numberPosition.add(new int[]{1, 1, 1, 1, 0, 1, 1});
        numberPosition.add(new int[]{0, 0, 0, 0, 0, 0, 0});

        for(int i=0; i<N; i++) {
            String[] input = br.readLine().split(" ");
            String[] firstNum = input[0].split("");
            String[] secondNum = input[1].split("");
            List<Integer> first = new ArrayList<>();
            List<Integer> second = new ArrayList<>();
            int MaxPosition = Math.max(firstNum.length, secondNum.length);
            if(MaxPosition == firstNum.length && firstNum.length != secondNum.length) {
                for(String s : firstNum) {
                    first.add(Integer.parseInt(s));
                }
                for(int j=0; j<firstNum.length-secondNum.length; j++) {
                    second.add(10);
                }
                for(String s : secondNum) {
                    second.add(Integer.parseInt(s));
                }
            } else if(MaxPosition == secondNum.length && firstNum.length != secondNum.length) {
                for(int j=0; j<secondNum.length-firstNum.length; j++) {
                    first.add(10);
                }
                for(String s : firstNum) {
                    first.add(Integer.parseInt(s));
                }
                for(String s : secondNum) {
                    second.add(Integer.parseInt(s));
                }
            } else if(firstNum.length == secondNum.length) {
                for(String s : firstNum) {
                    first.add(Integer.parseInt(s));
                }
                for(String s : secondNum) {
                    second.add(Integer.parseInt(s));
                }
            }
            int cnt = 0;
            for(int j=0; j<MaxPosition; j++) {
                int[] checkFirst = numberPosition.get(first.get(j));
                int[] checkSecond = numberPosition.get(second.get(j));
                for(int h=0; h<7; h++) {
                    if(checkFirst[h] != checkSecond[h]) cnt++;
                }
            }
            System.out.println(cnt);
            br.close();
        }
    }
}

 

728x90
반응형

'개발자 세릴리 > 코딩테스트' 카테고리의 다른 글

[Softeer] Java - level2 문제풀이(바이러스)  (2) 2023.02.12
[Softeer] Java - level2 문제풀이(GBC)  (0) 2023.02.11
[Softeer] Java - level2 문제풀이(회의실 예약)  (0) 2023.02.08
[Softeer] Java - level2 문제풀이(비밀 메뉴)  (0) 2023.02.04
[Softeer] Java - level2 문제풀이(지도 자동 구축)  (0) 2023.02.03
'개발자 세릴리/코딩테스트' 카테고리의 다른 글
  • [Softeer] Java - level2 문제풀이(바이러스)
  • [Softeer] Java - level2 문제풀이(GBC)
  • [Softeer] Java - level2 문제풀이(회의실 예약)
  • [Softeer] Java - level2 문제풀이(비밀 메뉴)
세릴리
세릴리
  • 세릴리
    세리의 데이터베이스 세상
    세릴리
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 개발자 세릴리 (65)
        • 비전공자 한 입 지식 (12)
        • 코딩테스트 (24)
        • 스펙업 (15)
        • JAVA (5)
        • 일상 (9)
      • 파이어족 세릴리 (21)
        • 블로그 운영 (3)
        • 각종 양식 공유 (1)
        • 돈되는 정보 공유 (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    명품자바프로그래밍 정답
    Java 문제
    비전공 개발자
    현대오토에버 코딩테스트
    adsp 벼락치기
    현대오토에버 코테
    개발자되는법
    비전공자 개발자
    adsp 공부법
    명품자바프로그래밍
    현대 코딩테스트
    adsp 수험표
    java 공부
    현대자동차 코딩테스트
    Softeer 문제 풀이
    명품자바프로그래밍 해설
    JAVA 개발공부
    softeer java 풀이
    adsp 자료
    프로그래밍 공부
    비전공자 개발
    현대모비스 코딩테스트
    오늘 이슈
    JAVA 책 추천
    백준
    adsp 독학
    이슈
    개발자 이직
    개발자 공부
    현대 코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
세릴리
[Softeer] Java - level2 문제풀이(전광판)
상단으로

티스토리툴바