yunicornlab

[Softeer] 소프티어 - [21년 재직자 대회 예선] 전광판 JavaScript (Level 2) 본문

Coding Test/Practice

[Softeer] 소프티어 - [21년 재직자 대회 예선] 전광판 JavaScript (Level 2)

yunicornlab 2024. 6. 30. 00:09
반응형

자바스크립트로 Softeer의 전광판 이라는 문제 풀기!

 

https://softeer.ai/practice/6268

 

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

 

softeer.ai

 

 

문제 풀이 아이디어

각 전구의 위치별로 index를 부여해서 position 배열을 정해주고 시작했다.

 

const fs = require('fs');
const [n, ...input] = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n')
const number_position = {
    ' ' : [0, 0, 0, 0, 0, 0, 0],
    '0' : [1, 1, 1, 0, 1, 1, 1],
    '1' : [0, 0, 1, 0, 0, 1, 0],
    '2' : [1, 0, 1, 1, 1, 0, 1],
    '3' : [1, 0, 1, 1, 0, 1, 1],
    '4' : [0, 1, 1, 1, 0, 1, 0],
    '5' : [1, 1, 0, 1, 0, 1, 1],
    '6' : [1, 1, 0, 1, 1, 1, 1],
    '7' : [1, 1, 1, 0, 0, 1, 0],
    '8' : [1, 1, 1, 1, 1, 1, 1],
    '9' : [1, 1, 1, 1, 0, 1, 1],
}

function compare(before, after) {
    let click_count = 0;
    for (let i=0; i<7; i++) {
        if (number_position[before][i] !== number_position[after][i]) {
            click_count += 1;
        }
    }
    return click_count;
}

for (let line of input) {
    let result = 0;
    let [before_number, after_number] = line.split(' ')
    let max_len = Math.max(before_number.length, after_number.length);
    before_number = [...before_number.padStart(max_len, ' ')]
    after_number = [...after_number.padStart(max_len, ' ')]


    for (let i=0; i<max_len; i++) {
        result += compare(before_number[i], after_number[i])
    }
    console.log(result)
}

 

단, 예를 들어 9881과 10724를 비교할 때 9881의 맨 앞 자리는 비어있는 걸로 처리해야해서 

"" : [0, 0, 0, 0, 0, 0, 0]으로 두었고,

0일 때는 불이 들어오지만 숫자만 0인 것이기 때문에

"0" : [1, 1, 1, 0, 1, 1, 1] 이렇게 설정해줘야 했다.

빈값과 0만 구분되도록 추가해서 성공!

반응형