직사각형 별찍기

직사각형 별찍기
1
2
3
4
5
6
7
8
9
10
11
12
// https://programmers.co.kr/learn/courses/30/lessons/12969
process.stdin.setEncoding('utf8');
process.stdin.on('data', (data) => {
const n = data.split(' ');
const a = Number(n[0]),
b = Number(n[1]);

for (let index = 0; index < b; index++) {
const row = '*'.repeat(a);
console.log(row);
}
});

해설

  • 별찍기!

예산

예산
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// https://programmers.co.kr/learn/courses/30/lessons/12982
function solution(d, budget) {
let answer = 0;
d = d.sort((a, b) => a - b);
console.log(d);
let count;
for (count = 0; count < d.length; count++) {
const element = d[count];
budget -= element;
if (budget < 0) {
break;
} else if (budget == 0) {
count++;
break;
}
}
answer = count;
return answer;
}
result = solution([1, 3, 2, 5, 4], 9);

해설

  • 각 부서의 요구 금액 배열과 예산이 인풋으로 들어온다
  • 최대한 많은 부서에게 지원하는 경우, 그 부서의 개수를 구해 리턴한다
  • 먼저 배열을 오름차순으로 정렬한다
  • 배열 앞에서 부터 하나씩 지원해주면서 예산을 깐다. 카운트++ 한다
  • 그러다가 예산이 요구하느 금액보다 작아 지원을 못해주는 경우 break한다
  • 현재까지 count를 반환한다

[1차] 비밀지도

[1차] 비밀지도
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// https://programmers.co.kr/learn/courses/30/lessons/17681
function solution(n, arr1, arr2) {
var answer = [];

arr1.forEach((element, idx) => {
let c = element | arr2[idx];
let c2 = c.toString(2);
let tmp = '';

c2.split('').forEach((val) => {
tmp += Number(val) == '0' ? ' ' : '#';
});

if (tmp.length < n) {
tmp = ' '.repeat(n - tmp.length) + tmp;
}
answer.push(tmp);
});

return answer;
}
result = solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28]);

해설

  • 정수 배열이 2개 들어온다
  • 각 배열에서 정수를 꺼내 or 연산한다
  • 1, 0을 정해진 문자로 변환한다
  • 2진 변환을 헀는데 자릿수가 작을 수 있다. 그때 앞을 ' '로 채운다