Programmers

Programmers 문제 풀이 20

백단비 2023. 5. 21. 21:34

문제 설명 : 주사위의 개수

 직육면체 모양의 상자 하나에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다.

상자의 가로, 세로, 높이가 저장되어 있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때,

상자에 들어갈 수 있는 주사위의 최대 개수를 return 하는 solution 함수?

 

제한 사항

  • box의 길이는 3
  • box [0] = 상자의 가로길이
  • box [1] = 상자의 세로 길이
  • box [2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n ≤ box의 원소
  • 주사위는 상자와 평행하게 넣음

 

입출력 예

box n result
[1,1,1] 1 1
[10,8,6] 3 12

 

문제 풀이 

 

function solution(box, n) {
	let count = 1
	for(let i = 0; i < box.length; i++) {
		count*= parseInt(box[i]/n)
        //상자 가로 세로 높이에 들어갈 수 있는 주사위의 개수를 구해서 다 곱해줌
	}
	return count;
}

 

 


 

 

문제 설명 : 최댓값 만들기(2)

정수 배열 numbers가 매개변수로 주어짐,

numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return 하는 solution 함수??

 

제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers의 길이 ≤ 100

 

입출력 예

numbers result
[1,2,-3,4,-5] 15
[0,-31,24,10,1,9] 240
[10,20,30,5,5,20,5] 600

 

문제 풀이

sort 메서드로 오름차순 정렬을 해준 다음

맨 앞에 두 수가 둘 다 음수면 두 수를 곱했을 때 양수가 되므로 맨 앞 두 수와

제일 큰 뒤에 두 수를 곱한 값을 Math.max를 이용하여 비교해 주면 된다.

function solution(numbers) {
	numbers.sort((a,b)=> a-b)
	let num = numbers.length
	return  Math.max((numbers[0] * numbers[1]),(numbers[num-2] * numbers[num-1]))
}

 

 


 

 

문제 설명 : 직각삼각형 출력하기

'*'의 높이와 너비를 1이라고 할 때, '*'을 이용해 직각 이등변 삼각형을 그리려고 한다.

정수 n이 주어지면 높이와 너비가 n인 직각 이등변 삼각형을 출력하도록 코드를 작성해라.

 

제한 사항

  • 1 ≤ n ≤ 10

 

입출력 예

 

-입력 #1

3

 

-출력 #1

*

**

***

 

문제 풀이 

처음에 뭔말인지 몰라서 멘붕 타다가 cosole.log가 찍혀있길래 그제야 출력이라는 말을 읽어서 풀 수 있었습니다.

<처음 문제코드>

const readline = require('readline');
const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout
});

let input = [];

rl.on('line', function (line) {
	input = line.split(' ');
}).on('close', function () {
	console.log(Number(input[0]));
});

내가 풀던 코드가 아니라서 뭐지 하다가 그냥 코드 실행해보자 해서 했는데 

콘솔에 찍힌게 숫자라서 Number(input [0]) = n이라 생각하고 풀어봤습니다.

 

<풀이>

const readline = require('readline');
const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout
});

let input = [];

rl.on('line', function (line) {
	input = line.split(' ');
}).on('close', function () {
	for (let i = 1; i <= +input[0]; i++) {
		console.log('*'.repeat(i));
		//'*'을 i만큼 반복해주는 메서드 repeat
	}
});

 

 

https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

320x100

'Programmers' 카테고리의 다른 글

Programmers 문제 풀이 22  (0) 2023.06.18
Programmers 문제 풀이 21  (0) 2023.05.22
Programmers 문제 풀이 19  (0) 2023.05.20
Programmers 문제 풀이 18  (0) 2023.04.12
Programmers 문제 풀이 17  (0) 2023.04.11