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만 구분되도록 추가해서 성공!