Challenge 18

4-2 Challenge 요소를 모두 더한 배열에서 k 번지 값 찾기(flat과 flatMap)

const ArrayAllAdd = array => {  return array    .reduce((acc, cur) => {      // acc 누산 결과를 저장할 변수      // cur 현재 요소      return acc.flatMap(        // flat과 map을 합친 기능으로        // 평탄화된 배열을 반환하는 기능        element => cur.map(element2 => element + element2),        // 누산 값의 요소에서        // 현재값(배열)의 요소를 더한 값이 더해진 배열을 생성        [0]        //acc 초기값      );    })    .sort((a, b) => a - b)[k - 1];  // 정..

Challenge 2024.08.27

3-3 Challenge

let makeAlbum = (genres, plays) => {  let order = new Map();  // 중복 없이 장르 별  // 전체 실행 횟수, 곡 넘버, 곡 별 실행 횟수를  // 저장하기 위해 사용  genres.forEach((element, index) => {    if (!order.has(element)) order.set(element, { totalPlay: 0, music: [] });    // 현재 장르가 order에 저장 돼 있지 않으면 저장할 공간 생성    // key를 element(장르)로 저장하고    // {totalPlay : 0, music : []}를 value로    // totalPlay을 key, 전체실행횟수를 value로 사용한다.    //..

Challenge 2024.08.27

CMD 게임 만들기 4Days

오늘은 라이브러리를 만드는 방법을 배웠다. 만약 내가 몬스터나 플레이어 Class를  main.js 파일이 아닌다른.js로 만들 경우 main.js에 import Monster from '../Character/Monster.js';import Player from '../Character/Player.js'; 과 같이 import를 받는 식으로 사용이 가능했다. 위의 Monster와 Player는 생성자로 Monster.js와 Player.js에서 외부 .js 파일에서쓸 수 있게  class Monster extends AbstractCharacter {  constructor(hp, mp, minDamamge, maxDamage) {    this._hp = hp;    this._mp = mp;  ..

Challenge 2024.08.26

3-2 Challenge 배열에 1 최대 개수 구하기

let maxLength = (nums, k) => {  let max = -1;  for (let i = 0; i nums.length; i++) {    //0 ~ lenght - 1까지 반복한다.    let count = 0;    // 0의 개수를 변수    for (let j = i; j nums.length; j++) {      if (nums[j] === 0) count++;      // 0이면 count+++      if (count > k) break;      // count가 k 개 이상이면 중단      max = Math.max(max, j - i + 1);      // 현재 최고 개수와 끝 - 시작 + 1=> 개수      // 비교해서 저장    }  }  retu..

Challenge 2024.08.26

3-1 Challenge 두산이 안타를 몇 개 쳐야 이기는가?

const doosanScore = Math.floor(Math.random() * 100 - 0 + 1);const kiaScore = Math.floor(Math.random() * 100 - 0 + 1);//임의의 점수 부여console.log("현재 두산 점수 : " + doosanScore);console.log("현재 기아 점수 : " + kiaScore);const result = doosanScore > kiaScore ? 0 : kiaScore - doosanScore + 4;// 두산 점수가 기아보다 높으면 안타 필요성이 없다// 동점이면 4개의 안타로 1점 얻기// 지고 있으면 kiaScore - doosanScore + 4// 로 점수차 + 4로 쳐야 하는 안타 개수 구하기conso..

Challenge 2024.08.26

CMD 게임 만들기 3Days

원래 계획은 팀원 분이 만드신 것 처럼새로 시작하면서 필요한 라이브러리를만들고 기능을 구현할 계획이었다... 그런데... 제출 기한을 생각했을 때에는기존에 만들던 내용을 바탕으로 다 완성 및 제출 후 새로 시작하는게 맞는 것 같았다... 그런데 전체적으로 기능을 추가 및 기존 코드를재활용하면서 기존 코드에서 오류가 생기는 경우가발생해 오류를 수정하는데 하루를 다 써 버렸다... 추가로 만든 기능으로는라운드 마다 몬스터의 능력치가 원래는일정하게 상승했는데 이제는 범위 내에서랜덤하게 증가하는 방식으로 바뀌었다... 의미가 없는 내용일 수도 있겠지만...이렇게라도 기록으로 뭔가를 남겨야 뭐라도 한 것 같은 기분이라 남겨본다...

Challenge 2024.08.23

CMD 게임 만들기 2Days

오늘은 "연속 공격", "방어  + 반격(일정 확률로 발동)", "능력치 상승"을 만들어 봤다. 연속 공격 같은 경우  doubleAttack(turn, enemy) {    if (this.#Gambling(this.#doubleAttackProbability)) {      LogClass.push(chalk.yellow(`\n[${turn}] 연속 공격을 성공했습니다!!\n`));      this.attack(turn, enemy);      this.attack(turn, enemy);    } else {      LogClass.push(chalk.yellow(`\n[${turn}] 연속 공격을 실패했습니다...\n`));    }  }private 메서드 Gambling 통해확률에 성공할 ..

Challenge 2024.08.22

CMD 게임 만들기 1Days

오늘부터 개인 과제인 CMD 로그라이크 게임 만들기를 시작했다. 위와 같은 방식으로  유저는 공격, 연속 공격, 방어, 도망가기 가 가능하고, 몬스터는  공격 이 가능하다(선택적으로 추가 기능 구현 해도 됨) 코드를 작성하면서 Monster 클래스를 상속 받아Person 클래스를 만들면코드의 재사용성이 높아지고,확장성을 높일 수 있다는 사실을 알게 됐다. 그래서, class Monster{~~~} class Person extends Monster{~~~~} 형식으로 현재 기본 공격과 확률적으로 성공하는 도주 기능을 만들어줬다. class Monster {  constructor(hp, minDamage, maxDamage) {    this._hp = hp;    this._minDamage = min..

Challenge 2024.08.21

2-5 Challenge 유효한 괄호

매니저님께 물어보니 괄호의 순서는{} () [] 걸로 의미하다고 하셨다... ( { [ 순서가 아니었다... // 문제 5// 주어진 문자열이 유효한 괄호 조합인지 확인하는 함수를 작성하세요.// 유효한 조합은 모든 여는 괄호가 올바르게 닫혀야 하며, 괄호의 순서도 일치해야 합니다/***제한사항:**- 문자열의 길이는 1 이상 1000 이하입니다.- 괄호는 `()`, `{}`, `[]`의 세 종류입니다.*/let Parentheses = string => {  string = string.split("").map(element => {    if (element === "(") return 1;    // '('은 1로    else if (element === "{") return 2;    // '{..

Challenge 2024.08.20

2-4 Challenge 두 수 선택 합 존재?

// 문제 4// 주어진 배열에서 두 수를 선택하여 그 합이 주어진 target 값과// 일치하는지 확인하는 함수를 작성하세요.// 일치하는 경우 true, 그렇지 않은 경우 false를 반환하세요./***제한사항:**- 배열의 길이는 2 이상 1000 이하입니다.- 배열의 원소는 1 이상 1000 이하의 자연수입니다.*/let sumArray = (array, target) => {    array = array.sort((a, b) => a - b);    //배열을 오름차순 정렬 합니다.    array.some((element, index, arr) => {      //some 함수로 조건에 부합하는 경우 true, 아닐 경우 false를 반환 합니다.      return arr.include..

Challenge 2024.08.20