2024.01.04 TIL - 알고리즘(두 수의 곱), 알고리즘 풀이 특강

Innes·2024년 1월 4일
0

TIL(Today I Learned)

목록 보기
30/147
post-thumbnail

📘 오늘의 공부

  • 알고리즘 특강 (알고리즘 풀이법 기초)
  • 알고리즘 문제풀이 (두 수의 곱)
  • JS 문법 강의 2회독차

📝 알고리즘

알고리즘 2차 특강

1. 알고리즘 풀이에 필요한 기초 js지식

1) 변수, 상수

  • 데이터 저장하기 위한 공간
  • 보조 기억 장치 활용
  • ex) 연습장에 써서 문제풀기(다 기억할 수 없어서)와 같은 맥락
  • let 변수, const 상수
  • Object.freeze 찾아보기

2) 조건문

  • if, else if, else 구문 사용
  • 조건에 따라 코드의 실행 흐름 제어

3) 반복문

  • for, while, do-while
  • 조건에 따라 반복 실행
  • do-while : 일단 한번 실행함(기미상궁 ㅋㅋ)
  • for(처음, 종료, 증감식) {}

4) 함수

  • y=f(x)의 x는 인풋, y는 아웃풋

2. 알고리즘 문제 풀이 과정

<튜터님께서 추천하는 문제 풀이 과정 - 입문편>

1) 큰 틀, 뼈대 생각해보고 직접 작성해보기

2) 뼈대에 로직을 '하나씩' 작성
(한번에 다 하려고 & 한번에 전부 생각하는 행위는 ❌ - 안 좋은 습관)

내가 욕심이 너무 많았구나! 😂 항상 리마인드!!!!

3) 작은 로직들을 하나씩 코드 안에 붙여보기

4) 잘 모르겠으면 ⭐️⭐️연습장 + 필기구를 활용⭐️
(코드가 제대로 돌아가는게 맞는지 검산을 직접 해보기)
(우리말로 의사코드를 적어보는 것도 좋음)

ex) 의사코드
1. 변수 a에 저장을 한다.
2. a의 값을 1씩 증가한다.

5) 목표가 뭐였는지 다시 한 번 상기하기

ex) 아, 문자 몇번 등장하는지 찾는거였지!

5) 로직이 정상적인 것 같으면 다음 로직을 생각해보기

6) 로직을 붙이는 작업을 목표가 달성될 때까지 반복!
(로직의 단위는 생각보다 작을 수 있음!)

🤔 문제 해석

  • ‘문자열 000 이 주어지면~’ -> 인풋이 외부로부터 주입됨!
    인풋을 정해줄게(함수의 인자로 문자열이 주어질거야)



알고리즘 문제 풀이(두 수의 곱)

  • 문제

  • 풀이

function solution(num1, num2) {
    var answer = num1 * num2;
    if (0 <= answer <= 10000) {
       return answer; 
    } else { false };
}
  • 풀이 이유

    • 두 수를 곱해야 하는데, 두 수에는 범위가 정해져 있으므로 곱에도 범위를 정해주어야 함
    • 두 수의 곱은 두 수 각각의 최대값끼리 곱한 수보다 더 클 수 없으므로, 두 수의 곱인 answer의 범위만 정해주면 됨
      (두 수의 최소값의 곱 <= 두 수의 곱 <= 두 수의 최대값의 곱)
  • 시도

    • 헷갈렸던 점 : 부등호(작거나 같다, 크거나 같다의 방향 & 꺽새가 왼쪽인지 등호가 왼쪽인지... 이런 사사로운 것들이 막상 직접 쓰려니까 헷갈리더라)

    • 1차 시도 : answer = num1 * num2 그대로 return (이렇게 해도 채점시 통과되긴 함)

    • 숫자 제한사항 발견(num1, num2의 최소값과 최대값)

    • 2차 시도 : 숫자 제한사항을 사이트에서 그대로 복붙
      0 ≤ num1 ≤ 100
      0 ≤ num2 ≤ 100
      (일단 부등호부터 코드에 작성하는 형식이 아니었음 엉망, 쉼표를 넣어야하나? ;를 넣나? 헷갈림)

    • 3차 시도 : 부등호 헷갈려서 <= => =< 의 향연

    • 4차 시도 : 0 <= answer <= 10000 부등호 맞나 아닌가 하다가
      answer >=0 && answer <= 10000 작성 -> 성공

    • 5차 시도 : 혹시 몰라 0 <= answer <= 10000 하니까 성공



🐣 오늘의 느낀점

  • 아무래도 손으로 쓰면서 연습하는거 시작해야될 것 같다... 특강 듣고있는데도 풀이를 듣고있는데 이거 분명 쉽게 설명해주고 계신것도 알겠고 문제도 그렇게까지 어려운 문제는 아닌걸 알겠는데... 낯설어서 그런건지 풀이를 많이 안해봐서 그런건지 아직은 풀이도 잘 모르겠고 문제를 봐도 어떻게 풀어야할지 손도 못대는 경우가 많다. 뼈대를 어떻게 세워야할지부터 감이 아예 안오니까 시작부터 막막하기만하다.ㅜㅠㅠ
  • 예전에 매니저님께서 손으로 풀면서 많이 늘었다고 하신게 기억나기도 했고, 나한테 맞는 방식으로 & 꾸준히 하기만 하면 분명 늘 것 같다는 생각도 든다. 근데 내 노력이 많이 들어가야할 것 같은 느낌적인 느낌...^^ 화이팅...!
profile
꾸준히 성장하는 우상향 개발자

1개의 댓글

comment-user-thumbnail
2024년 1월 5일

문제에 나오는 제한 사항은 이미 적용된 상태로 인풋으로서 들어온다는 뜻입니다! 굳이 직접 다시 체크해줄 필요는 없어요!!

답글 달기