[Algorithm] 구현 : 체스 세트
💡 알고리즘 구현문제로 분류했다.
문제 🛫
체스 세트
오래된 창고에서 체스판과 체스 기물을 발견했다.
불행히도 기물 별 개수가 부족하거나 많아 한 세트를 이루지 못하고있다.
게임을 하기위해 부족하거나 많은 기물의 개수를 계산하여 반환하는 프로그램을 제작하시오.
기물의 개수는 배열 형태로 아래와 같이 king부터 pawns 순으로 들어오며
한 게임을 하기 위해 필요한 기물의 개수는 아래와 같다.
King(1), Queen(1) Rooks(2), Bishops(2), Knights(2), pawns(8)
TestCase
Input
[0, 1, 2, 2, 2, 7][2, 1, 2, 1, 2, 1]
[0, 1, 1, 5, 3, 6]
Output
#1 [1,0,0,0,0,1]
#2 [-1,0,0,1,0,7]
#3 [1,0,1,-3,-1,2]
분석
배열의 index를 순회하면되는 무난하고 쉬운 구현 문제이다. for loop를 이용해 풀면 된다. 문제 난이도는 최하위 구현 문제이지만, 여기에 여러가지 조건이 붙으면 충분히 어려워질 수 있는 문제라고 생각한다.
풀이 📖
Solution (For Loop)
무난하게 for loop 를 사용해서 풀이했다.
// 체스 세트
let input = [
[0, 1, 2, 2, 2, 7],
[2, 1, 2, 1, 2, 1],
[0, 1, 1, 5, 3, 6]
];
let chessPiece = [1, 1, 2, 2, 2, 8]; // 조건을 만족시켜야하는 체스 피스 배열
function answer(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === chessPiece[i]) result.push(0); // 동일한 인덱스를 비교한다.
else result.push(chessPiece[i] - arr[i]);
}
return result;
}
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} [${answer(input[i])}]`);
}
Solution 2 (For Loop) 👍🏽
위 솔루션의 코드 리팩토링
// 체스 세트 Refactor
let input = [
[0, 1, 2, 2, 2, 7],
[2, 1, 2, 1, 2, 1],
[0, 1, 1, 5, 3, 6]
];
let chessPiece = [1, 1, 2, 2, 2, 8];
function answer(arr) {
let result = [];
let count = 0;
for (let i = 0; i < arr.length; i++) {
result[count++] = chessPiece[i] - arr[i];
}
return result;
}
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} [${answer(input[i])}]`);
}
Review 💡
알고리즘 문제를 풀때 연습장으로 수학 공식(점화식) 을 작성해서 푸는게 많은 도움이 된다.
answer function에 else 조건에도 자칫 초보자들은 else if로 필요없는 조건식을 더 넣을 수도있다.
상대적으로 난이도가 너무 낮아서 포스팅을 할지 말지 고민을 했는데, 티끌모아 태산
이라는 말 처럼 작은 것 하나 하나 기록해두는 습관을 들이는데에 도움이 될 것 같아 글을 작성했다.
Author And Source
이 문제에 관하여([Algorithm] 구현 : 체스 세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@task11/Algorithm-구현-체스-세트
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
오래된 창고에서 체스판과 체스 기물을 발견했다.
불행히도 기물 별 개수가 부족하거나 많아 한 세트를 이루지 못하고있다.
게임을 하기위해 부족하거나 많은 기물의 개수를 계산하여 반환하는 프로그램을 제작하시오.
기물의 개수는 배열 형태로 아래와 같이 king부터 pawns 순으로 들어오며
한 게임을 하기 위해 필요한 기물의 개수는 아래와 같다.
King(1), Queen(1) Rooks(2), Bishops(2), Knights(2), pawns(8)
TestCase
Input
[0, 1, 2, 2, 2, 7][2, 1, 2, 1, 2, 1]
[0, 1, 1, 5, 3, 6]
Output
#1 [1,0,0,0,0,1]
#2 [-1,0,0,1,0,7]
#3 [1,0,1,-3,-1,2]
배열의 index를 순회하면되는 무난하고 쉬운 구현 문제이다. for loop를 이용해 풀면 된다. 문제 난이도는 최하위 구현 문제이지만, 여기에 여러가지 조건이 붙으면 충분히 어려워질 수 있는 문제라고 생각한다.
Solution (For Loop)
무난하게 for loop 를 사용해서 풀이했다.
// 체스 세트
let input = [
[0, 1, 2, 2, 2, 7],
[2, 1, 2, 1, 2, 1],
[0, 1, 1, 5, 3, 6]
];
let chessPiece = [1, 1, 2, 2, 2, 8]; // 조건을 만족시켜야하는 체스 피스 배열
function answer(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === chessPiece[i]) result.push(0); // 동일한 인덱스를 비교한다.
else result.push(chessPiece[i] - arr[i]);
}
return result;
}
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} [${answer(input[i])}]`);
}
Solution 2 (For Loop) 👍🏽
위 솔루션의 코드 리팩토링
// 체스 세트 Refactor
let input = [
[0, 1, 2, 2, 2, 7],
[2, 1, 2, 1, 2, 1],
[0, 1, 1, 5, 3, 6]
];
let chessPiece = [1, 1, 2, 2, 2, 8];
function answer(arr) {
let result = [];
let count = 0;
for (let i = 0; i < arr.length; i++) {
result[count++] = chessPiece[i] - arr[i];
}
return result;
}
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} [${answer(input[i])}]`);
}
Review 💡
알고리즘 문제를 풀때 연습장으로 수학 공식(점화식) 을 작성해서 푸는게 많은 도움이 된다.
answer function에 else 조건에도 자칫 초보자들은 else if로 필요없는 조건식을 더 넣을 수도있다.
상대적으로 난이도가 너무 낮아서 포스팅을 할지 말지 고민을 했는데, 티끌모아 태산
이라는 말 처럼 작은 것 하나 하나 기록해두는 습관을 들이는데에 도움이 될 것 같아 글을 작성했다.
Author And Source
이 문제에 관하여([Algorithm] 구현 : 체스 세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@task11/Algorithm-구현-체스-세트
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
알고리즘 문제를 풀때 연습장으로 수학 공식(점화식) 을 작성해서 푸는게 많은 도움이 된다.
answer function에 else 조건에도 자칫 초보자들은 else if로 필요없는 조건식을 더 넣을 수도있다.
상대적으로 난이도가 너무 낮아서 포스팅을 할지 말지 고민을 했는데, 티끌모아 태산
이라는 말 처럼 작은 것 하나 하나 기록해두는 습관을 들이는데에 도움이 될 것 같아 글을 작성했다.
Author And Source
이 문제에 관하여([Algorithm] 구현 : 체스 세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@task11/Algorithm-구현-체스-세트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)