[Softeer, JS] (21년 재직자 대회 예선) 전광판

mxxn·2023년 7월 24일

Softeer

목록 보기
4/8

문제

문제 링크 : 전광판

풀이

const readline = require('readline');

const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
})
const numArr = []
for(let i= 0; i<10; i++){
    let arr = []
    if(i===0) arr = [1,1,1,0,1,1,1]
    if(i===1) arr = [0,0,1,0,0,1,0]
    if(i===2) arr = [1,0,1,1,1,0,1]
    if(i===3) arr = [1,0,1,1,0,1,1]
    if(i===4) arr = [0,1,1,1,0,1,0]
    if(i===5) arr = [1,1,0,1,0,1,1]
    if(i===6) arr = [1,1,0,1,1,1,1]
    if(i===7) arr = [1,1,1,0,0,1,0]
    if(i===8) arr = [1,1,1,1,1,1,1]
    if(i===9) arr = [1,1,1,1,0,1,1]
    numArr.push(arr)
}

rl.on('line', input => {
    let [numA, numB] = input.split(' ').map(el => el.split('').reverse().join(''));
    if(numB){
        let cnt = 0;
        for(let i=4; i>-1; i--){
            let aArr = []
            let bArr = []
            if(numA[i]) aArr = numArr[numA[i]]
            if(numB[i]) bArr = numArr[numB[i]]
            if(aArr.length > 0 && bArr.length > 0){
                aArr.forEach( (el,idx) => {
                    if(el !== bArr[idx]) cnt += 1
                })
            }else{
                if(aArr.length > 0){
                    aArr.forEach( el => {
                        if(el === 1) cnt += 1
                    })
                }else {
                    bArr.forEach( el => {
                        if(el === 1) cnt += 1
                    })
                }
            }
        }
        console.log(cnt)
    }
    
})
  1. 전광판 숫자별로 켜져야 하는 전등을 배열로 표현
  2. numA와 numB를 1의자리부터 비교해야 하므로 reverse
  3. 첫 line은 문제의 수니깐 numB가 없으므로 if문으로 걸러내고
  4. 만의 자리부터 for문을 돌려서 켜야 하는 전등수 count
profile
내일도 글쓰기

0개의 댓글