반응형
✏️ 문제 링크
https://softeer.ai/practice/6268/history?questionType=ALGORITHM
✏️ 문제 풀이
간단한 string 비교 문제로, 0부터 9까지 라이트가 켜진 위치 정보를 저장한다.
이렇게 인덱스를 정하고 이제 숫자별로 라이트가 켜진 부분을 저장하면 된다.
그렇게 하면 아래와 같은 스트링이 나온다. '-'는 아예 켜지지 않은 전광판을 의미한다.
{
'-':'0000000', 0:'1110111', 1:'0010010', 2:'1011101',
3:'1011011', 4:'0111010', 5:'1101011', 6:'1101111',
7:'1110010', 8:'1111111', 9:'1111011'
}
이제 쉽다. 숫자 A와 B를 비교해서 각 숫자의 켜진 부분과 꺼진 부분의 차이가 몇 개 나는지 카운트해서 그걸 answer로 출력해주면 된다.
예를 들어 A[0]은 1이고 B[0]은 현재 2라고 했을 때 정의해둔 1과 2의 정보를 가지고 스트링의 다른 부분을 카운트하는거다.
근데 이렇게 하기 위해서는 숫자의 length가 같아야한다. 그렇기 때문에 5-A.length 만큼, 5-B.length 만큼 앞에 아예 켜지지 않은 전광판을 붙여준다. 이렇게 하면 나중에 A[idx]가 '-' 이고 B[idx] 가 숫자가 되면 둘의 차이가 결국 B[idx] 숫자에서 라이트가 켜져야하는 만큼일테니 우리가 앞서 구현해놓은 로직으로 충분히 커버가 된다.
✏️ 문제 코드
const readline = require('readline');
const rl = readline.createInterface({input:process.stdin, output: process.stdout});
let input = [];
rl.on('line', function(line){
input.push(line.split(' '));
}).on('close', function(){
const N = +input.shift();
for(let [A, B] of input){
let answer = 0;
A = '-'.repeat(5-A.length) + A; B = '-'.repeat(5-B.length) + B;
for(let i=0; i<5; i++){
if(A[i]===B[i]) continue;
answer += count(A[i], B[i])
}
console.log(answer);
}
})
function count(num1, num2){
const lights = {
'-':'0000000', 0:'1110111', 1:'0010010', 2:'1011101', 3:'1011011', 4:'0111010',
5:'1101011', 6:'1101111', 7:'1110010', 8:'1111111', 9:'1111011'
}
let ret = 0;
for(let i=0; i<7; i++){
if(lights[num1][i] !== lights[num2][i]) ret++;
}
return ret;
}
⭐ if feedback and question : comment please⭐
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[Softeer] 수퍼바이러스 (level3, Javascript) (0) | 2024.11.13 |
---|---|
[Softeer] HSAT 7회 정기 코딩 인증평가 기출 - 순서대로 방문(level3, Javascript) (0) | 2024.11.13 |
[프로그래머스] 타겟 넘버 / C++ / level2 (0) | 2021.10.06 |
[백준] 13701번: 중복 제거 (0) | 2021.10.05 |
[백준] 11811번: 데스스타 / C++ (0) | 2021.10.05 |
댓글