밍부스05) 알고리즘 공장 가동시작(부제: 알고리즘 문제를 풀면서 배운것들_문과.ver)

minji jeon·2022년 7월 18일
0

TIL_

목록 보기
24/61
post-thumbnail

이번주차는 알고리즘을 풀어보면 자바스크립트 문법과 친해지는 시간이다. 첫날 알고리즘 공장 가동을 시작했을때는 이걸 하루종일한다고? 도라방스..이번주차는 어떻게 버티지...? ;;;였는데...
하다보니 맞추는 재미도 있고(아주 조금), 팀원들과 서로의 답을 비교해가며 풀으니 비슷한 유형의 문제에는 요령도 생겨서 4일동안 주어진 28문제를 다 풀어버렸다....
남은 3일 동안에는 추가적인 문제를 음미하면서 풀예정이다.
룰루알고리즘은 즐거워짜릿해살려죠

🤸‍♀️알고리즘 문제를 풀면서 배운 요령과, 문법들

문제를 푸는 감을 잃었을때 가끔씩 꺼내보면 좋을거같다.
그리고 자바스크립트 코드를 짤때에도 도움이 될 예정^^
위 내용들은 문자열을 다루는 프로그래머스의 <하>문제에서 배운 내용들이다.

* 배열을 모두돌때 사용할수 있는 함수(for외)

foreach

forEach() 메서드는 주어진 함수를 배열 요소 각각에 대해 실행합니다.
fruits.forEach((fruit) => console.log(fruit));
foreach가 for문에 비해 성능은 별로지만 가독성이 더 좋으니 가벼운경우라면 foreach룰 사용할것

map

배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
arr.map((a,b)=>{a[b]})
const map1 = array1.map(x => x * 2);

for in

for...in문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복합니다. (Symbol로 키가 지정된 속성은 무시합니다.)
for in 반복문은 : for (var array값 in array){}
이렇게 사용한다. array값은 i번째로도 사용이 가능하다.

every로 모든 인덱스를 검사하여 리턴..

every() 메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트합니다.
Boolean 값을 반환합니다.
array1.every(isBelowThreshold)
const isBelowThreshold = (currentValue) => currentValue < 40;

* 누적된 수를 계속 더한다...

count ++

count = count +1

sum += x

sum = sum + x

reduce

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

* 반복문의 횟수를 모를때 (몇번 반복하면 좋을까..? )

while문

while문은 조건문이 참일 때 실행되는 반복문이다. 조건은 문장안이 실행되기 전에 참, 거짓을 판단한다.

while (n < 3) {
  n++;
  x += n;
}

*반복문의 횟수를 안다

for문 (i의 조건설정이 문제해결의 key가 되기도 한다. )

* 조건문

if문

삼항연산자
isMember ? '$2.00' : '$10.00'

switch

switch (expression) {
  case value1:
    //Statements executed when the
    //result of expression matches value1
    [break;]
  case value2:
    //Statements executed when the
    //result of expression matches value2
    [break;]
  ...
  case valueN:
    //Statements executed when the
    //result of expression matches valueN
    [break;]
  [default:
    //Statements executed when none of
    //the values match the value of the expression
    [break;]]
}

* 문자를 숫자로 변환하고 싶을때

number

Number('123'); // 숫자 123을 반환
Number('unicorn'); // NaN

parseInt

parseInt 함수는 첫 번째 인자를 문자열로 변환하고, 그 값을 파싱하여 정수나 NaN을 반환합니다.
parseInt(string)
주의: parseInt('0e0') // 0

문자 * 숫자

"1" * 1 // 숫자1

* 문자로 바꾸고 싶을때

tostring

obj.toString()

* 문자열을 이용하여 조합할때

tostring => split
-->배열이 된다.

* 스프레드 문법

* 문자열을 자르고 싶을때

substring

substring() 메소드는 string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.
arr.substring(시작, 끝)

splice

(지정된 포지션에서 삭제가능)
splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
months.splice(start, deletecount, add) //

slice

slice() 메서드는 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.
arr.slice([begin[, end]])

pop

pop() 메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.
fruits.pop() //뒤에서 하나가 없어짐

  • arr에서 특정 value만 찾고 싶을때

filter 새로운배열로 반환

filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
let result = arr.filter(word => word % divisor === 0 ) 간단한 검색도 가능하다let res = users.filter(it => new RegExp('oli', "i").test(it.name));``

find

find() 메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환합니다.
arr.find(element => element % divisor === 0 )

indexof

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.
console.log(fruits.indexof('apple'));

includes

includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다.
[1, 2, 3].includes(2); // true

* 정렬시
sort
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다.
원배열이 정렬되는 것에 유의하세요.
숫자정렬시 : result.sort((a,b) => a-b)
문자정렬시 : months.sort()

* 배열에 추가할때

push

push는 원본배열자체를 바꿈
fruits.push('peach');
fruits.pop() //뒤에서 하나가 없어짐

* 숫자만 찾고 싶을때
isNaN

isNaN() 함수는 어떤 값이 NaN인지 판별합니다.

* 최댓값 최솟값

Math.min(a, b)
Math.max(a, b)

* 양수를 구할때

Math.abs(b-a)

* 동일한 문자를 반복한다.

repeat

* 문자와 변수를 함께 출력시

${}
""+ +""

* 날짜와 관련된..

date함수

* 배열을 다시 문자로 만들고 싶을때

join("")

* 제곱근?

Math.sqrt

*교집합

arrA.filter(it => arrB.includes(it)); // returns [1, 2]

* 스프레드문법

Math.min(...arr)
return e > Math.min(...arr) //
. 최소값보다 큰 값을 빼고 새로운 배열로 반환 const arrS = [...arr, 5, 6];
-->스프레드문법 왜사용? Math.min(arr) // NaN
이중배열을 펼칠수도 있다.
let nested = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let flat = nested.reduce((acc, it) => [...acc, ...it], []);
//flat is [1, 2, 3, 4, 5, 6, 7, 8, 9]


  • 중첩으로 된 구문을 작성할경우 안에서 부터 작성하면 헷갈리지 않는다.
  • 입출력값과 조건을 꼼꼼하게 보기
  • 여집합 교집합을 잘 이용해보자
    * MDN을 볼때 주요해서 확일할 부분
    -입력값
    -출력값
    -예시
profile
은행을 뛰쳐나와 Deep Dive in javascript

0개의 댓글