
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
function solution(s) {
var answer = 0;
var n = s.split("");
if (n.length === 4 || n.length === 6) {
if (isNaN(s) === false) {
answer = true;
} else {
answer = false;
}
} else {
answer = false;
}
return answer;
}
자바스크립트에서 숫제에 e가 붙을 경우 지수 표기법으로 인식하여 문자인 경우에도 숫자로 인식해서 일어나는 오류가 있다고 한다.
function solution(s) {
var n = s.split("");
if (n.length === 4 || n.length === 6) {
for (let i = 0; i < n.length; i++) {
if (isNaN(n[i])) return false;
}
return true;
}
return false;
}
문자열을 배열화해서 길이를 구하고 isNaN()으로 숫자로 구성되어있는지 체크 => 위의 오류로 인해 실패.
반복문을 사용해 인덱스 값이 숫자가 아닐 경우 false를 리턴하도록 만듦.
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
function solution(arr1, arr2) {
var answer = [];
for (i = 0; i < arr1.length; i++) {
var sum = [];
for (j = 0; j < arr1[i].length; j++) {
sum.push(arr1[i][j] + arr2[i][j]);
}
answer.push(sum);
}
return answer;
}
더한 값을 넣어줄 배열 sum생성. 이중 반복문을 통해 arr1과 arr2의 값을 더한값을 sum에 집어넣어준 후 answer에 집어넣음.
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
n과 m은 각각 1000 이하인 자연수입니다.
process.stdin.setEncoding("utf8");
process.stdin.on("data", (data) => {
const n = data.split(" ");
const a = Number(n[0]),
b = Number(n[1]);
for (i = 0; i < b; i++) {
var star = "";
for (j = 0; j < a; j++) {
star = star + "*";
}
console.log(star);
}
});
이중 반복문을 사용해 가로와 세로의 길이로 사용, 별을 넣어줄 star변수 생성, 출력
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
두 수는 1이상 1000000이하의 자연수입니다.
function solution(n, m) {
var answer = [];
var max = 0;
var min = 0;
var num = 0;
if (n > m) {
num = n;
} else num = m;
for (i = 0; i <= num; i++) {
if (n % i === 0 && m % i === 0) {
max = i;
}
}
min = (n * m) / max;
answer = [max, min];
return answer;
}
최대공약수를 넣어줄 변수 max와 최소공배수를 넣을 변수 min생성, n과m의 크기에 대한 조건이 없으므로 큰값을 찾기위해 조건문 사용, num이하만큼 반복하는 반복문 생성후 n의 나머지가 0이면서 m의 나머지도 0인 i값을 max에 넣어줌. 최소공배수 = 두값을 곱한후 최대공약수로 나누면 나오는 값이므로 위의 방식으로 문제를 풂.
어제의 문제였던 stage부분..
자고 일어났더니 갑자기 잘된다.
나머지 도망치기파트와 유저 체력회복을 마무리하고 도전구현으로 넘어갔다.
function random(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }최소값, 최대값을 받은 후 최소값~최대값의 값이 나오도록 하는 random이라는 함수를 만들어 사용했다.
랜덤 함수를 통해 다음 층으로 넘어갈때 플레이어의 hp(health point)와 ap(attack point), 몬스터의 hp가 랜덤값이 더해져 증가하게 만들었다.
연속공격은 중요한 타이밍에 도박수처럼 사용할 수 있도록 25%의 확률을, 방어는 성공하면 공격받지않고 체력이 회복되게 해서 억까 당하지 않도록 40%의 확률을 주었고, 도주 획률이 너무 높으면 노 리스크 플레이가 가능해지니 3%의 확률을 주었다.
case '2': logs.push(chalk.green(`${choice}를 선택하셨습니다.`)); if (100 - random(0, 100) < 25) { logs.push(`연속 공격 성공!`); player.attack(monster, player.ap); logs.push(`몬스터에게 ${player.ap}의 피해를 입혔습니다.`); player.attack(monster, player.ap); logs.push(`몬스터에게 ${player.ap}의 피해를 입혔습니다.`); } else { logs.push(`연속 공격 실패...몬스터에게 공격받습니다.`); monster.attack(player, monster.ap); } break; case '3': logs.push(chalk.green(`${choice}를 선택하셨습니다.`)); if (100 - random(0, 100) < 40) { logs.push(`방어 성공!`); player.hp += random(5, 30); logs.push(`체력이 소폭 회복됩니다.`); } else { logs.push(`방어 실패...몬스터에게 공격받습니다.`); monster.attack(player, monster.ap); } break; case '4': logs.push(chalk.green(`${choice}를 선택하셨습니다.`)); if (100 - random(0, 100) < 5) { monster.hp = 0; logs.push(`도주 성공!`); } else { logs.push(`도주 실패...몬스터에게 공격받습니다.`); monster.attack(player, monster.ap); break; }어떤 식으로 할까 생각해 봤는데 만들어둔 랜덤 함수를 활용해서 최솟값을 0, 최댓값을 100으로 준 후 random값을 100에서 뺏을때 나오는 값이 확률 값보다 작으면 해당 확률이 적용된 것이라고 생각해서 저렇게 만들어 봤다.
몇몇 고전게임에는 방향키로 하는 치트가 있다는게 생각이 나서 치트모드를 만들어봤다.(방향키 입력을 트리거로 구현하는 방법을 몰라 그냥 0번을 입력하면 치트가 켜진다...)
cheat() { return (this.hp = 9999), (this.ap = 9999); }player의 cheat()
case '0': logs.push(chalk.bgYellowBright(`치트모드 발동.`)); player.cheat(); break;치트 활성화
본캠프에 들어오고 나서 첫 개인 과제를 마쳣다. 초반에 코드를 해석하고, class를 잘 사용하지 못해 버벅이고 어려움이 있었지만 이때 포기하지 않고 구글링하고 생각해서 잘 해결했고 덕분에 기간내에 도전과제까지 구현할 수 있었던 것 같다. 재밋다! 프로그래밍!