TIL 4일차

JM.dev·2021년 5월 13일
0

TIL

목록 보기
4/8
post-custom-banner

TIL이란?
오늘 공부 한 내용을 매일매일 기록하는 방법
Today Wrong Problem이란?
오늘 내가 틀린 문제지만 더이상 틀리지 말자

Today Wrong Problem

1. 이중 반복문 (double for loop)

1.1 파라미터 값이 소수인지 확인

내가 약한 부분이 바로 이중for문이라고 불리는 이중 반복문 이다.
주로 문제를 읽고 이중 반복문을 적용을 해야하는데 어디서 어떻게 접근을 해야하는지 모르는 상황과
i,j를 조건을 적을때 특히 j부분의 조건을 지정하는 것이 어려웠습니다.

function Primes(num) {
  let result = '2';

  for (let i = 3; i <= num; i += 1){ // 2부터 num까지 반복하여 
    let isPrime = true

    for (let j = 2; j < i; j += 1){ // i가 소수인지 확인하고
      if (i % j === 0){
        isPrime = false
        break; // break도 최적화에 기여합니다. 그 이유는 고민해보세요!
      }
    }
  }
  return result;
}

위 문제가 저작권문제가 걸릴수 있기에 약간 변형을 했습니다. 내용은 이중 반복문을 사용하여
파라미터 값인 num이 소수인지 아닌지 확인하여 boolean 형태로 리턴해주는 문제입니다.
문제 풀이는 위의 소스를 해석해 주시면 이해가 되길 바랍니다.

1.2 문자열을 전부 이어붙인 문자열

let output = makeMarginalString('abc');
console.log(output); // --> 'aababc'

output = makeMarginalString('flower');
console.log(output); // --> 'fflfloflowfloweflower'

위 코드를 보면 a + ab +abc 형태를 알수있다 즉 문자열을 하나씩 증가하며 이어서 붙이는 문제인데 이것또한 이중 반복문(이중for문)을 이용하여 풀어야한다.
여러분은 보자마자 어떻게 접근해야 하는지 아실까요?

let result = '';

  for (let i = 0; i < str.length; i++) {
    for (let j = 0; j <= i; j += 1) {
      console.log(result);
      result = result + str[j];
    }
  }

  return result;

저는 위의 형태를 만드는데 40분이 걸렸네요 즉 j가 i이하일때!! 이조건을 생각을 하지 못하여 고생했던 문제입니다. 더 좋은 방법이나 수정할것이 있다면 알려주시면 감사하겠습니다.

profile
차곡차곡 한단계 씩
post-custom-banner

0개의 댓글