JS 알고리즘 문제풀이/섹션 1. 기본문제 풀이 18

7.10부제

📌강의 정리 10부제 번호와 자동차의 끝 두자리가 나온다. 이번에도 for of 를쓴다. ===을 쓴다. 10으로 나누면 어떤 숫자든지 마지막 1의 자리가 나머지로 나온다. 📌느낀점 문제는 무난하게 풀었는데 우선 for of를 안써서 코드가 한줄이 더 늘어났고 ===을 안썼다.. ===은 안써도 되지만 그래도 익숙해지는것이 좋을 것 같다. //나의 코드 //강사님 코드

6.홀수

📌강의 정리 홀수들만 구하고 그 홀수들의 합을 출력한다. 먼저 arr배열을 넘긴다. 탐색해서 홀수를 넘겨야한다. for문에서 i가 아니라 of 구문을 써보자. for(let x of arr) 변수를 길게 의미있게 하지말고 배울때는 간단하게 하자. ex) tmp, a, x, result 면접관앞에서는 변수이름 잘 정해서 하자. arr의 값들을 하나씩 x가 받는다. 코딩인터뷰할때 ==과 ===중에서 하나로 통일해서 해야한다. ===은 타입까지 비교한다. min은 Number.MAX_SAFE_INTEGER로 초기화한다. 습관을 들여놓자. += 이라는 할당연산자를 써서 코드를 간결하게 짜자 answer.push를 써서 answer라는 배열에 sum과 min을 push한다. 이렇게해서 answer를 정의하면 된다..

[보충] 내장함수로 최솟값, 최댓값 구하기

📌강의 정리 내장함수가 있다. 배열의 최솟값을 구해주는 Math.min(3,2,7) 을 쓰면 3,2,7이라는 인자값들 중에서 최솟값을 반환한다. 여기에 배열주소를 넣으면 값을 반환하지는 않는다. 인자값들만 넣어야 한다. 따라서 배열을 쓰고 싶다면 배열 전개 연산자를 써야한다. ...arr 를 하면 배열을 펼펴주게 된다. arr[0], arr[1], arr[2] 이렇게 되고 배열에서의 최솟값이 구해진다. 반대로 최댓값은 Math.max(...arr) 를 쓰면 최댓값이 나온다. Math.min.apply(null, arr) 를 쓰면 전개 연산자를 쓰지 않아도 된다. 전개 연산자를 추천한다. arr = [5, 3, 7, 11, 2, 15, 17]; // apply function solution(...arr)..

5.최솟값 구하기

📌강의정리 열개 천개 만개 십만개 들어올수도 있다. let arr로 입력배열을 만들어 준다. min 변수를 써보자 이때는 아주 큰값으로 초기화 해놓는 것도 좋다. min=Number.MAX_SAFE_INTEGER; 를 하면 큰 숫자로 안정적으로 초기화 할 수 있다. for문을 써보자 전에 활용했던 3수중 최소값을 응용하면 좋다. for문에 if문을 써서 그 최소값 알고리즘을 반복한다. 📌느낀점 이번에는 문제에 sort쓰지말란 말 없어서 썼는데 강사님은 안쓰고 풀었다... 지금 바로 for문으로 풀어봐야한다. 그리고 항상 배열이든 변수든 선언할때는 앞에 let이나 var을 붙이는 것을 잊지말자. 알고리즘을 항상 생각하고 프로그래밍이란 무엇인지 생각하며 문제를 풀자. //나의 코드 //강사님 코드

4.1부터 N까지 합

📌강의정리 for문 이용해서 answer에 누적하라는 문제이다. 1부터n까지의 합을 받는다. 변수는 let로 계속 받자 나중에 var이나 const써야되면 그때 쓰겠지 누적은 answer = answer+i로 하면 된다. 이 식의 과정을 다 써보면 answer에 합이 누적되는것을 알 수 있다. 📌느낀점 정확히 맞았다. 약간의 차이는 for문 다음에 한줄이지만 {}를 썼냐 안썼냐 차이 if에서는 안썼길래 안썼는데 for문에는 써야되나보다.. 더 알아보니 n*(n+1)/2 를 이용해 한줄로 합을 출력할 수도 있다... 더 열심히 공부해야겠다. //나의 코드 //강사님 코드

3.연필 개수

📌강의 정리 계산과정을 한번 따라가보면 우선 몫을 12로 나누어주고 나머지가 있으면 한다스를 더 추가해준다. 이때 방법은 두가지이다. 하나는 %와 /를 써서 조건문쓰거나 math.ceil이라는 올림함수를 써서 해보는 방법이다. 구글링해서 math라는 메소드를 알아보자. mozila사이트를 추천한다. ceil은 올리고 floor는 내리고 round는 반올림한다. 📌느낀점 구글링해서 올림함수가 있다는 것을 알았지만 알고리즘 시험에서 써도 되는지 몰라서 안썼다... 알고리즘 시험자체에대한 지식이 부족하다. 조금 알아볼 필요가 있다. 나는 조건식과 %, /를 써서 풀었고 /는 c와 다르게 //같은게 없어서 나머지가 있을경우 parseInt를 써서 정수를 따로 만들어준 후에 1을 더했다. 항상 코드를 줄이고 간결..

2.삼각형 판별하기

📌강의정리 세수중 최소값쓰기를 복습해보는 문제이다. 삼각형 되려면 가장 긴막대를 제외한 두막대의 합이 긴막대보다 최소 커야지 삼각형이 성림된다. 우선 앞에서의 세수중 최소값을 응용한다. 그러면 최대값이 max에 저장된다. 위에 sum이라는 변수를 만들어 미리 세 변수를 합한 값을 넣는다. 그래서 sum에서 max를 빼면 나머지 짧은 막대 둘의 값의 합이다. 이제 sum-max를 max랑 비교해서 짧거나 같으면 answer를 no로 바꿔주기만 한다. 📌느낀점 세수중 최소값을 응용한건 잘했지만 짧은 두막대의 합을 구할때 sum이라는 변수를 따로 만들어 sum에서 max를 뺄 생각을 하지 못했다... 이렇게 하면 굳이 제일 큰 값에서 다른 두 막대의 합을 각각의 경우에서 구할 필요가 없을뿐더러 나의 코드보다 ..