2023.03.17 알고리즘 TIL

정승원·2023년 3월 17일
0
post-thumbnail

📒 목차

  • for문 반복횟수 줄이기
  • split()과 Math.max()를 활용하여 최대값 찾기

for문 반복횟수 줄이기

  • 가장 큰 값을 찾는 biggest 변수를 처음부터 str 문자열의 첫번째 index값으로 할당하여 선언하게 되면, for문은 두번째 index부터 시작하게 되며, 반복횟수를 한번 줄일 수 있다.
/* 
todo:  문제 설명
 str은 무작위 숫자인 문자열입니다.  해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.
 만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.

! 입력인자
 str은 문자열입니다.

~ 주의사항
 str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
 비교할 수 있는 기준값이 있어야 합니다.
 최댓값을 저장할 수 있는 변수가 있어야 합니다.

? 예상결과
 bigNum("12345") -> 5
 bigNum("87135") -> 8 
*/
 
function bigNum(str) {
  let biggest = str[0]; // index[0]을 할당하여 반복횟수 1회 줄일 수 있다.
  for (let i = 1; i < str.length; i++) {
    let num = Number(str[i]);
    if (num > biggest) {
      biggest = num;
    }
  }
  return biggest;
}
bigNum("12345"); // 5
bigNum("87135"); // 8

split()과 Math.max()를 활용하여 최대값 찾기

split()

split()은 ()안에 구분자(seperator)를 입력하여 원본 문자열에서 지정한 구분자를 기준으로 여러 개의 문자열로 나눈다.

구문

1. split()
2. split(seperator)
3. split(seperator, limit)

매개변수

seperator

  • 원본 문자열에서 끊어야 할 부분을 나타낸다.
  • 실제 문자열 또는 정규표현식을 받을 수 있다.
  • 구분자를 넣지 않거나, 문자열에 일치하는게 없는 경우, 원본 문자열을 반환한다.
  • ('') 비어있는 따옴표를 넣게되면 문자열의 각 인덱스마다 하나씩 쪼개지게 된다.
let str = "abcde";
let case1 = str.split();
// ["abcde"]
let case2 = str.split("k")
// ["abcde"]
let case3 = str.split("")
// ['a', 'b', 'c', 'd', 'e'] 

limit

  • 끊어진 문자열의 최대 개수를 나타내는 정수이다.
  • 원본 문자열의 개수를 넘어서는 값을 limit에 넣게 되면, 쪼개서 보여줄 수 있는 데까지만 보여주게 된다.
let str = "a-b-c-d-e";
let case3 = str.split("-", 2)
// ['a', 'b']

Math.max()

  • 입력 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환하는 함수이다.
  • 인수중 하나라도 숫자로 반환하지 못한다면 NaN으로 반환한다.

문법

Math.max()
Math.max(0,1,3...)

배열에서 Math.max() 사용법

  • 스프레드 연산자(...arr) 사용하여 적용해야 한다. 그렇지 않으면, NaN값이 반환된다.
let arr = [1, 2, 3];
let max = Math.max(arr);
// NaN
let max = Math.max(...arr);
// 3

문제

/* 
todo:  문제 설명
 str은 무작위 숫자인 문자열입니다.  해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.
 만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.

! 입력인자
 str은 문자열입니다.

~ 주의사항
 str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
 비교할 수 있는 기준값이 있어야 합니다.
 최댓값을 저장할 수 있는 변수가 있어야 합니다.

? 예상결과
 bigNum("12345") -> 5
 bigNum("87135") -> 8 
*/
 
function bigNum(str) {
  str = str.split(''); // split()을 통해 문자열의 각 숫자를 하나씩 분리하기
  console.log(Math.max(...str)) // Math.max()를 활용하여 최대값 찾기
}

0개의 댓글