TIL

8/22 TIL

nbcssw 2024. 8. 22. 21:16

데일리 루틴

41번 - 이상한 문자 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

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

programmers.co.kr

function solution(s) {
    var answer = '';
    const arr = [];
    const words = s.split(' ');
    for(let i=0; i<words.length; i++){
        for(let j=0; j<words[i].length; j++)
            if(j%2 !== 0)
                arr.push(words[i][j].toLowerCase());
            else
                arr.push(words[i][j].toUpperCase());
        arr.push(' ');
    }
    arr.pop();
    answer = [...arr].join('');
    
    return answer;
}

 

 

42번 - 삼총사

https://school.programmers.co.kr/learn/courses/30/lessons/131705

 

프로그래머스

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

programmers.co.kr

function solution(number) {
    var answer = 0;
    for(let i=0; i<number.length; i++)
        for(let j=i+1; j<number.length; j++)
            for(let k=j+1; k<number.length; k++)
                if(number[i] + number[j] + number[k] === 0)
                    answer++;
    return answer;
}

 

 

43번 - 크기가 작은 부분 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/147355

 

프로그래머스

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

programmers.co.kr

function solution(t, p) {
    var answer = 0;
    let temp;
    for(let i=0; i<t.length-(p.length-1); i++){
        temp = t.slice(i,i+p.length);
        if(temp <= p)
            answer++;
    }
    return answer;
}

 

 

개인과제

층마다 만나는 몬스터를 다르게 하고 싶어서, Monster 클래스를 통해 다양한 몬스터를 만들고 랜덤으로 조우하는 기능을 추가하려고 했다.

// 몬스터 목록
var bat = new Monster('Bat', 25, 7);
var hound = new Monster('Hound', 50, 5);
var wisp = new Monster('Wisp', 40, 6);

function copyMonster(monster) { // 몬스터를 복사해서 반환하는 함수
  if (monster === null || typeof monster !== 'object')
    return monster;

  const copiedMonster = {};

  for (let key of Object.keys(monster))
    copiedMonster[key] = copyMonster(monster[key]);

  return copiedMonster;
}

.
.
.


let mobNum = getRandomInt(0, 2);
let monster;

switch (mobNum) {
      case 0:
      	monster = copyMonster(bat);
        break;
      case 1:
      	monster = copyMonster(hound);
        break;
      case 2:
      	monster = copyMonster(wisp);
        break;
}
    
monster.hp = Math.floor(monster.hp * mult);
monster.atk = Math.floor(monster.atk * mult);
await battle(stage, player, monster);

처음에는 위와 같이 monster 변수를 선언하고, 랜덤으로 정해진 mobNum에 따라 monster에 복사해오는 방법으로 하려고 했는데, 객체를 복사해오기 위해 만든 함수인 copyMonster()가 몬스터 객체 내부의 attack()함수를 복사해오지 못하는지, 몬스터가 공격해야할 타이밍에 monster.attack() is not function 이라는 에러가 발생했다. 아직 원인 파악을 하지 못해서, 구글링을 더 해보든가 튜터님한테 질문하든가 해서 해결해야겠다.

'TIL' 카테고리의 다른 글

8/26 TIL  (0) 2024.08.26
8/23 TIL  (0) 2024.08.23
TIL 8/21 - 데일리 루틴 40번, 개인과제  (0) 2024.08.21
TIL 8/20 - 데일리 루틴 28번 ~ 39번  (0) 2024.08.20
TIL 8/20 (1) - 알고리즘 문제풀이 2  (0) 2024.08.20