TIL_210225

멜로디·2021년 2월 25일
0

Today I Learned

목록 보기
4/30

오늘 배운 것

  • 코플릿 다시 풀기 : 반복문
  • while문에 관해 복습

while문이 취약점 중 하나였다

코플릿을 푸는데 for문은 자주 사용해 왔기 때문에 거의 공식처럼 사용하여 코드가 술술 나왔지만, while문은 코플릿이 아니면 거의 사용해 본 기억이 없다. 그래서 그런지 코플릿을 다시 푸는데 while문이 나오자 막혔다.

개념

let sum = 1;
let i = 0;

while(i <= arr.length) {
sum = sum + i
  i = i+1
}

for문에서 사용하던 것과 비슷한데 위치만 다르다. for문에서 사용하던 초기화(let i = 0)는 반복문 밖에 선언되어 있고, 조건식은 똑같이 괄호 안에 있고, 증감문(i++)은 반복문 내부에 있다.

헷갈리는 문제 다시 풀기. line by line

07_makeDigits2

수(num)을 입력받아 1부터 num까지의 정수로 구성된 문자열을 리턴해야 합니다.

  • 입력 : number타입의 정수(num >=1 )
  • 출력 : string타입을 리턴해야 합니다
  • 주의 : while문을 사용해야 하며, 숫자 사이를 하이픈으로 구분합니다.

my code

function makeDigits2(num){
let result = '1'
let i = 2;
  while(i<=num) {
    result = result + `-${i}`
    i = i+1
  }
  return result;
}

입력값은 무조건 1 이상이다. 결과값에 무조건 1은 들어간단 얘기. let result ='1'
반복문 초기화는 2부터 시작해야 하는데, 1부터 시작하게 되면 불필요하게 1을 중복하여 결과를 리턴하기 때문이다 (예를 들어 인자값이 2라면, 결과는 1-1-2로 리턴하게 된다)

08_makeOddDigits

수(num)를 입력받아1을 포함하여 num개의 홀수로 구성된 문자열을 리턴해야 합니다.

  • 입력 : number타입의 정수(num>= 1)
  • 출력 : string타입을 리턴해야 합니다.
  • 주의 : while문을 사용해야 하며, 숫자 사이의 구분은 없습니다.

my code

function makeOddDigits(num) {
  
  let result = '';
  let count = 0;
  let i = 1;

  while (count < num) {
    result = result + String(i);
    i = i + 2;
    count = count +1
  }

  return result;
}

홀수를 리턴해야 한다는 것에 상당한 고민을 했지만, 사실 고민거리도 아니었다.
입력은 무조건 1 이상일 것이며, 거기에 2씩 더하게 되면 홀수가 만들어진다.

09_makeMultiplesOfDigit

수를 입력받아 1부터 해당 수까지의 수 중에서 3의 배수로만 구성된 문자열을 리턴해야 합니다.

  • 입력 : number타입의 정수(num >= 0)
  • 출력 : string타입을 리턴해야 합니다.
  • 주의 : for문을 사용해야 하며, 숫자 사이의 구분은 없습니다. 3의 배수가 없을 경우 빈 문자열을 리턴합니다.

my code

function makeMultiplesOfDigit(num) {

let result = '';

for(let i = 3; i <= num; i += 3) {
   result = result + String(i)
}
return result;
}

8번 문제와 같이 3의 배수를 리턴해야 한다는 것에 고민을 했지만, 이것 역시 고민할 만한 것이 아니었다.
8번 문제와 거의 흡사하지만, 입력은 0부터 들어올 것이며, '홀수'가 아니라 '3의 배수'만 덧붙여야 하는 문제인데,
결과값은 3부터 시작해야 하기 때문에 초기화를 3으로 해준 뒤, 그 뒤에 3씩 추가해주면 된다.
(3의 배수는 결국 3을 계속해서 더한 값과 같다)

profile
하루하루 배울때마다 기록하는 일기장

0개의 댓글