짧은 부트캠프 회고와 반복문 문제

장은수·2022년 10월 27일
0

FE공부일기

목록 보기
4/7

오늘의 블로깅

이제 6일차된 짧은 부트캠프회고와 오늘 스터디에서 푼 반복문 문제 2문제를 어떻게 접근했고 무엇을 실수했고 어떻게 풀었는지
써보려고한다.

일단 부트캠프를하며 내가 이렇게까지 공부 할 수 있다는 것을 처음 알았다.😅

처음 문제들을 봤을땐 오 흥미있네 재밌다 이정도로 봤다가 점점 커지는 문제들과 점점 작아지는 나 자신을 알 수 있었다😜
그래도 좋은 사람들을 만나 스터디를 꾸리고 시간도 정해서 공부를하니 공부를 하는재미가 있었고
다른 사람들 앞에서 문제풀이를 설명해보니 더 재미있었다 뭔가 의욕도 더 생기고 오기도 생기고 다 생기고 내 멘탈은 무너지고 ...

어쨌든 그 오기하나로 6일차로 올때까지 아침부터 새벽까지 달렸다!

다른사람과 경쟁하기보다 내 페이스를 찾으며 내 자신의 위치를 확실하게 알고 문제들을 헤쳐나가자

요약하면 지금까지 머리에 새긴건 저 문장이다.

경쟁하기보다는 내 페이스를 따라 꾸준히 (들락날락 하지않고😊) 앞을 향해 공부해나가는 것이고
그렇게 한다면 나도 언젠가 지금 내가 되고 싶은 실력의 위치까지 갈 수 있을꺼라고 생각한다.

그 사람들도 다 나와 같은 과정을 거쳐온 것이다.

메타인지라는 것을 나는 처음들었는데 제일 귀에 때려박혔던 말은 그 다음인 내 자신의 위치를 확실하게 알고
무엇이 부족한지 어떤거에 중점을 두어야하는지를 생각하며 앞으로 남은기간을 열심히 헤쳐나갈 생각이다.


반복문 문제풀이

반복문은 배운 첫날부터 21문제로 1번풀고 풀지 못할 정도였는데 동기들의 도움으로 꽤 익숙하게 쓰게된거 같기는하다.
아직도 완벽하게 이해했냐고하면 아니라고 말할수있고 앞으로 능수능란하게 쓸수 있도록 할 예정이다.

그래서 피곤함에도 불구하고 하루 목표를 정했고 아침에 생각한 그 목표를 위해 이렇게 문제풀이를 써본다

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

function makeDigits2(num) {
  // TODO: 여기에 코드를 작성합니다.

  // "1-2-3-4-5..."이런 식으로 출력해야함
  // while문을 사용 (for문 금지)
  // "-"을 잘 넣는게 관건인거같음

  let dg = '1';
  let i = 2;
  while(i<=num){
    dg += '-' + i;
    i++;
  }
  return dg;
}

이렇게 수를 입력받아 문자열로 사이에 '-'을 넣어 나열하는 문제였다.
한번 풀었었고 그렇게 어렵지 않다고 생각했는데 역시 다시 풀어보니 완벽하게 이해하고 바로 나올 정도의 수준이 아니였다.

그래서 처음엔 들이닥친 문제는

반복을 하는 건 익숙해졌는데 저 '-'을 어떻게 넣는가였다.
일반적으로 반복하면 앞에다 붙이던 뒤에다 붙이던 원하는 결과값과 다르기때문에 빼는게 중요했다.

결국은 해결법을 스스로 찾았는데

사실 너무 간단한 문제같아서 찾아보지않고 혼자 힘으로 이해하고 활용하고 싶었다.

해결법은 애초에 1이 담긴 문자열을 변수에 선언하고 그다음을 '-2'이런식으로 넣으면 되는 거였다!

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

마찬가지로 쉬운 문제였는데 오늘 뭔가 머리가 점점 돌아가지 않았다 😢

function makeOddDigits(num) {
  // TODO: 여기에 코드를 작성합니다.

  //문제를 잘 읽자!!!!!!!!!

  //1부터 num까지 홀수만 추출한다음 문자열로 나열하는 문제

  let result = '';
  let i = 0;
  while(i <= num*2){ // num만큼의 홀수를 이어붙여 출력해야함 ---> i는 넘 만큼 반복하게 하는 조건식
    if(i % 2 === 1){ // i가 홀수라면
    result += String(i);
    }
    i++;

  }
  return result;
}

결국은 이렇게 의사코드도 써보고 하며 풀었는데

나중에 생각해보니 굉장히 간단한 코드였다 ....

그리고 오늘의 제일 중요한 중점

오늘 정규스케쥴시간에 푼 문제도 그렇고 문제를 너무 급하게 읽고 급하게 풀려는 경향이 심하다.

앞으로는 천천히 뜯어보고 계획을 세우고 정 이해가 안간다면 문제를 직접 타이핑해보며 의사코드를 써서 시간이 걸리더라도
천천히 풀어보는 습관을 점점 들일 계획이다.

문제를 천천히 확실하게 이해하고 풀어보자!

아무튼 결국은 저렇게 받은 수의 2배를 돌며 결과값을 가져오는 반복문을 만들었는데 ...

function makeOddDigits(num) {
// 만약 전달인자가 5라면 5번반복이아니라 홀수 다섯개를 써야한다!! 
// 풀이방법 -- 홀수를 전달인자만큼 반복하는것이기때문에 홀짝홀짝나오니까 3을 입력하면 6까지는 돌아봐야한다 5면 10 그래서 이렇게 풀었는데
// 맞을까?

function makeOddDigits(num) { // 레퍼런스의 풀이방법
  let result = ''; // 결과를 출력하기위해 빈문자열을 선언한다

  let count = 0; // 전달인자만큼 반복하기위해 변수선언
  let i = 1; // 홀수를 넣어주기위해 변수선언
  while (count < num) { // count가 0이니 num미만으로 반복조건
    result = result + String(i); // result에 쌓아가며 재할당하는 코드
    i = i + 2; // 홀수이기 때문에 2씩 증가 .,......... ㅑㅗ후류재뎌ㅗㅎ래
    count++; // 반복해줘야되기때문에 1씩 증가하는 증감식
  }

  return result; // 결과 
}

위와같이 맞을까? 이런 방법이 아닐꺼같은데라는 생각이들어 다시 생각해보니
홀수를 찾고 그 홀수에 2씩 더해나가면서 나열하면 되는 정말 말도 안되게 간단한 문제였다.

막힌 문제점은 아직도 반복문을 정확하게 이용하지는 못한다는 점
-> 아마 문제를 제대로 이해못했어도 반복문을 정확하게 이해하고 사용했다면 바로 문제해결방안을 찾았을꺼같다

그리고 여기서도 처음에 문제를 제대로 읽지않고 한 20분가량을 뻘짓을 했다는 점
-> 위에서도 말한거처럼 오늘 느낀바가 너무커서 책상에도 써놓고 항상 상기시키며 단점을 극복해 나가야겠다

뭐 어쨌든 조금 피곤하고 답답하고 머리가 터질꺼같아도 오기인지 재미있게 해나가고 있는 것 같다.

앞으로도 너무 급하게 가지도 않으며 너무 나태하지도 않게 꾸준히 달려가길 바란다

그럼 오늘의 블로깅 끝! 👌

0개의 댓글