Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 흥달쌤
- 출처 : 한입크기로 잘라먹는 타입스크립트
- 함수형 코딩
- 김영한쌤
- 쏙쏙 들어오는 함수형코딩
- 출처 : 코딩앙마
- 갈길이 멀구나
- 에릭노이먼
- 에릭 노먼드
- 자바스크립트 딥다이브
- 이웅모
- 유틸리티타입은 공식문서 자주 보자
- 로버트 C마틴
- 출처 : https://www.boostcourse.org/
- 큰돌의 CS책
- 클린코드다시읽기
- 나는 flux좋아...
- 쏙쏙 들어오는 함수형 코딩
- 출처는 코딩앙마
- 에릭 노이먼
- 쏙쏙들어오는함수형코딩
- https://product.kyobobook.co.kr/detail/S000001952246
- 저자: 유인동
- 쏙속 들어오는 함수형코딩
- 출처는 코딩애플
- 리엑트를 다루는 기술
- 출처 : 코딩애플
- 오종택개발자님
- 생코님Redux
- 출처 : 자바스크립트 딥다이브
Archives
- Today
- Total
틈틈히 메모중
[1장] 예제풀이 본문
[문제 1] start, end 사이의 소수를 찾는 함수를 만들어보자.
조건 isPrime 함수는 소수를 판별합니다.
const isPrime = (n: number) => {
}
const findPrimeInRange = (start: number, end: number) => {
}
//결과값 예시
console.log(...findPrimeInRange(1, 100));
// [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
문제풀이
/*
소수찾는 함수 출처(수정쪽)
https://velog.io/@hyorimm/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%86%8C%EC%88%98-%EC%B0%BE%EA%B8%B0-in-JavaScript
*/
// 소수인지 판별하는 함수
const isPrime = (x: number) => {
for (let i = 2; i <= Math.sqrt(x); i++) {
if (x % i === 0) return false;
}
return true;
};
//소수일 때 이터레이터를 리턴
// 책에 있는 자연수 이터레이터로 생성하는 코드 복붙해서 시작함
const findPrimeInRange = (start: number, end: number) => {
let n = start; //순회를 시작할 숫자
return {
next(): IteratorResult<number> {
while (n <= end) {
const current = n++;
if (isPrime(current)) return { value: current, done: false }; //소수일 때 반환
}
return { value: undefined, done: false }; //end넘으면 종료
},
[Symbol.iterator]() {
return this;
},
};
};
[문제2] price 가 전 price 보다 높은 로그만 찍어야 합니다. 해당되는 id 를 모아서 뱉어냅니다.
로그로 찍으면 아래와 같이 결과가 나와야합니다.
const logs = [
{ id: 1000, price: 100 },
{ id: 2000, price: 101 },
{ id: 3000, price: 100 },
{ id: 4000, price: 102 },
{ id: 5000, price: 103 },
{ id: 6000, price: 105 },
]
function getUpPriceLogs(
iter: IteratorObject<{ id: number, price: number }>,
count: number
): number[] {
}
//결과값 예시
console.log(getUpPriceLogs(logs[Symbol.iterator](), 3))
// [1000, 2000, 4000]
문제풀이
//책에 있는 filter함수 구현 복붙해서 변형함
function getUpPriceLogs(
iter: IteratorObject<{ id: number; price: number }>,
count: number
): number[] {
let prev = -Infinity; //이전값 state
let result: number[] = []; //반환할 id를 모을곳
while (result.length < count) {
//count다 채우면 루프종료
const { value, done } = iter.next(); //현재값
if (done) break; //iter길이만큼만 루프
if (value.price > prev) {
//전값과 현재값 비교
result.push(value.id);
}
prev = value.price; //이전 가격 갱신
}
return result;
}
'BoOk > 멀티패러다임프로그래밍' 카테고리의 다른 글
[2장] 함수형프로그래밍과 타입시스템 그리고 LISP (0) | 2025.05.27 |
---|---|
[1장] 이터레이션 프로토콜 (0) | 2025.05.25 |