알고리즘 소소한 팁

박재훈·2023년 3월 1일
0

알고리즘

목록 보기
13/13

1. TRUE / FALSE 리턴할때

true / false 또는 yes / no 등 둘 중 하나의 값을 리턴 해야하는 경우 초기값을 true나 yes로 설정해두고 true의 조건이 아닐때만 false를 리턴한다.

let condition = true

if (false) condition = false

return condtion

2. 최솟값 구하기

최솟값구할때 미리 엄청 큰 값으로 초기화해놓는것도 좋다.
let min = Number.MAX_SAFE_INTEGER 그리고 하나씩 비교하면서 가장 작은값을 찾는 것.

3. for ...of / for each

arr을 하나씩 순회할 때 사용.

for (let x of arr) {
	let answer = x > 2 ? 1 : 2
}
//predicate는 함수이고 필숫값임. (고차함수)
//function forEach (predicate, thisArg)
a = [1, 2, 3, 4, 5]
a.forEach(v => console.log(v));

for each와 map의 차이는 map은 새로운 배열을 반환하기때문에 반드시 return문을 작성해주는것이 중요하다. map은 원본 배열과 똑같은 길이의 배열을 만듦.
참고 : https://whales.tistory.com/m/115

4. 10진수는 어떤 값이든 10으로 나누면 항상 1의자리가 나머지가 된다.

5. 특정문자 찾아서 바꾸기 (9번문제)

answer = answer.replae(/A/g, '#') 이러면 전역의 A를 찾아서 #으로 바꿈.

6. 대문자 찾기 (11번문제)

for(let x of arr) x === x.toUpperCase() ? true : false
또는 아스키코드 x.charCodeAt()

  • a - z : 97 - 122 대문자는 32빼면 됨.

대소문자 변환 하는것도 첫번째 방법처럼 하면 편함.

7. substring , substr

substring(1,2) 은 1부터 2까진데 2는 제외함.
substr(1,2)는 1번 인덱스부터 2개를 출력.

8. indexOf

indexOf('k', 2) 하면 2번 인덱스부터 찾는다는 의미.
indexOf 활용해서 중복문자제거하기.

for (let i = 0; i < s.length; i++) {
	if(s.indexOf(s[i]) === i) answer += s[i]
}

문자열을 돌면서 s[i]번째 문자가 s라는 문자열에서 몇번째인지 확인하는건데 indexOf는 가장 먼저 찾는 인덱스번호를 리턴하기때문에 saas 라는 문자열로 실험하면 s는 0, a는 1이 나온다. 그렇다면 s라는 문자열에서의 위치와 i가 일치하면 해당문자가 처음 발견된 것이므로 그때만 answer에 담는것이다.

9.

profile
신입 개발자

0개의 댓글