난이도 : Level. 1
언어 : Javascript
출제 내역 : 연습문제
직사각형 별찍기
- 주어진 숫자 배열을 이용해, '*'로 된 직사각형을 만들자
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
for (let i = 0; i<b; i++) {
let result = ''
for (let l=0; l<a; l++){
result = result + '*'
}
console.log(result)
}
});
다른 문제들이랑은 다르게 console.log로 답을 내야하기에
약간 시간이 걸렸지만, 반복문을 이용해서 간단하게 답을 낼 수 있었습니다.
x만큼 간격이 있는 n개의 숫자
- x 만큼 간격이 있는 n 개의 숫자 배열을 만들기
function solution(x, n) {
var answer = [];
const add = x
for (let i = 0; i<n; i++) {
answer.push(x)
x = x + add
}
return answer;
}
add
변수에 원래 x 값을 저장해 주고,
반복문을 이용해서 x 값에 a 를 n 만큼 더해주도록 해서 해결했습니다.
행렬의 덧셈
- 같은 크기의 배열에서 같은 인덱스에 있는 값을 더하기
function solution (arr1, arr2) {
return arr1.map((a,i) => a.map((b, j) => b + arr2[i][j]));
}
해당 문제는 map
함수를 이용해서 동일한 인덱스의 값끼리 더해주도록 했습니다.
핸드폰 번호 가리기
- 뒤의 4자리를 제외한 번호를 '*'로 만들기
function solution(phone_number) {
var answer = '';
let backNum = phone_number.slice(phone_number.length-4,
phone_number.length)
answer = '*'.repeat(phone_number.length-4) + backNum
return answer;
}
BackNum
이라는 변수를 만들어서 뒤의 4자리를 빼놓은 다음
repeat
함수를 통해 나머지 숫자를 가리는 코드를 짜봤습니다.
하샤드 수
- 어떤 수의 자릿수를 다 더한 값으로, 어떤 수를 나눴을 때 나누어 떨어지는 수 찾기
function solution(x) {
var answer = true;
let digit = String(x).split('')
let Num = 0
for (let i = 0; i<digit.length; i++) {
Num = Num + Number(digit[i])
}
return x%Num === 0 ? answer = true : answer = false
}
우선 숫자를 배열 형태로 나눈 뒤,
해당 자리수를 더한 값을 Num
에 넣어줍니다.
그 뒤, 나머지를 확인해서 0이면 true를 아니라면 false를 내줍니다