TIL

2024.01.22 TIL #string.substring(a,b) #string.repeat(n)

inz1234 2024. 1. 22. 20:46

1. string.substring(a,b)

- a번째부터 b번째 전까지 문자열 자르기

 
 let str = "Hello";

 console.log(str.substring(2));                   // "llo"
 console.log(str.substring(2, 4));              // "ll"

 console.log(str.substring(5));                  // "" -> 아무것도 안나옴 : 마지막 문자열의 index +1 을 넣으면 "빈 문자열" 반환
 console.log(str.substring(2, str.length));       // "llo" -> 2부터 끝까지
 

 

2. string.repeat(n)

 
 console.log("abc".repeat(1)); // "abc"

 console.log("abc".repeat(2)); // "abcabc"

 console.log("abc".repeat(2.7)); // 인자가 소수일 경우: 내림한 정수만큼 repeat // "abcabc"

 console.log("abc".repeat(-1));     // 인자가 음수이거나
 console.log("abc".repeat(1 / 0));   // 무한대일 때  => Range Error 
 

 

3. 프로그래머스 문제

연속하는 두 정수 left 와 right 가 있을 때, 그 사이에 정수들의 약수의 갯수가 짝수면 그 수를 더하고, 홀수면 그 수를 빼는 함수를 만들어 보시오.

 

나의 첫 번째 답변

 
 function solution(left, right) {
 
  for (let num = left; num <= right; num++) {
    let sum = 0;
    let count = 0;
    for (let i = 1; i <= num; i++) {
      if (num % i === 0) {
        count++;
      }
    }
    if (count % 2 === 0) {
      sum += num;
    } else {
      sum -= num;
    }
  }
  return sum;
  }

 

어디가 틀렸을까?

- 바로 let sum = 0 이라는 부분이 for문 안에 있어서 틀렸다.

왜냐면, for문 안에 있기 때문에 for문을 돌 때마다 sum의 값이 0으로 초기화되기 때문이다.

답은 

 
 function solution(left, right) {
   let sum = 0;
  for (let num = left; num <= right; num++) {
    let count = 0;
    for (let i = 1; i <= num; i++) {
      if (num % i === 0) {
        count++;
      }
    }
    if (count % 2 === 0) {
      sum += num;
    } else {
      sum -= num;
    }
  }
  return sum;
 }

 

이거였다.

for문 안에 있으면 새로 돌 때마다 초기화된다는 걸 기억하자!

 


느낀점

오늘,, 진짜 지금까지의 부트캠프 나날 중 최악의 날 이었다.

급성 위장염이 동시에  와서 원인도 모르겠고 약을 먹어도 너무너무 아프고 위아래로 뿜고...
시간은 채워야되고 내일은 개인프로젝트 마감일이라...ㅠㅠ뿌엥

진짜 힘들었다.

내일은 부디 낫고 싶다.

새벽에 응급실 갈 까봐 너무 무섭다 지금