일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSR
- 태그된 유니온
- 이분 검색
- ESlint
- 투포인터
- 무한 스크롤
- app router
- dfs
- map
- tailwind
- Promise
- recoil
- autosize
- useAppDispatch
- 결정 알고리즘
- Cypress
- React
- 리터럴 타입
- async/await
- 인터섹션
- 타입 좁히기
- 반공변성
- webpack
- CORS
- TS
- Jest
- 호이스팅
- 공변성
- CI/CD
- RTK Query
- Today
- Total
목록전체 글 (510)
짧은코딩
해결법 모든 경우의 수를 다 구해야 하기 때문에 모든 경우를 다 구한 다음에 비교를 하면 된다. 이때 Set에 넣어서 구하면 된다. Set는 중복된 값을 허용하지 않기 때문에 Set를 활용하면 된다. 그리고 Set를 정렬할 때는 Array.from으로 배열로 바꿔서 하면 된다. 내 코드
해결법 이 문제는 가장 비싼 선물을 할인 받는다고 해서 선물 받을 수 있는 최대 학생 수를 구할 수 없다. 따라서 모든 경우의 수를 다 해봐야 한다. 그래도 가장 싼 선물부터 계산해보는 것이 효율적이니 오름차순으로 정렬을 했다. 그리고 for문으로 첫 번째 선물부터 마지막 선물까지 다 할인을 적용했다치고 각 경우에 대해서 계산을 해야한다. 따라서 이중 for문을 이용해서 이를 구한다. 각 선물을 계산 할 때 마다 cnt 변수를 ++해준다. 주의할 점은 product와 m은 계속 써야하는 변수라서 다른 변수에 넣어두고 사용해야 한다. 그 후에 answer에 answer, cnt 값 중 더 큰 것을 넣어주면 된다. 코드
해결법 이 문제는 4중 for문을 사용해야 한다. 먼저 처음 2중 for문은 변수를 i, j의 초기값을 1로 두고 둘 다 학생 수까지 돌려야한다. 초기값을 1로 두는 이유는 i와 j가 등수로 사용되기 때문이다. 그리고 처음 2중 for문은 모든 경우의 수를 다 돌아가도록 한다. 그 다음 2중 for문은 각각 k, s로 변수를 두고 테스트 수, 학생 수로 돌려야한다. 이때 test[k][s]가 각각 i, j와 같으면 저장을 해두고 비교하면 된다. i가 멘토, j가 멘티라서 i가 j보다 작으면 count를 올려준다. 마지막에 이 count가 테스트 결과의 수와 같으면 answer++를 해주면 된다. 코드
TS와 건망증 interface Axios { get(): void; } interface CustomError extends Error { response?: { data: any; }; } declare const axios: Axios; (async () => { try { await axios.get(); } catch (err: unknown) { console.error((err as CustomError).response?.data); } })(); 원래 ts 에러 코드에는 이렇게 밖에 없다. 하지만 위 코드의 CustomError 처럼 response를 추가하면 더 추가할 수 있다. 위 코드에다가 err.response?.data를 추가하면 위에서 선언해줬지만 ts가 건망증이 생겨서 잊어버..
공변성, 반공변성 서로 대입할 수 있고 대입할 수 없는 것을 말하는 것이 공변성, 반공변성이다. 리턴값 -대입 가능 function a(x: string): number { return +x; } a("1"); type B = (x: string) => number | string; const b: B = a; a 함수가 B에 대입이 가능하다. 왜냐하면 리턴값은 더 넓은 타입에 대입이 가능하기 때문이다. -대입 불가 function a(x: string): number | string { return +x; } a("1"); type B = (x: string) => number; const b: B = a; 이와 반대로 더 넓은 타입에서 좁은 타입으로는 대입할 수 없다. 매개변수 -대입 가능 funct..
타입 만들기 forEach -예시1 const a: Arr = [1, 2, 3]; a.forEach((item) => { console.log(item); }); a.forEach((item) => { console.log(item); return "3"; }); 이 코드가 있을 때 Arr 타입을 추론할 수 있어야 한다. interface Arr { forEach(callback: (item: number) => void): void; } const a: Arr = [1, 2, 3]; a.forEach((item) => { console.log(item); }); a.forEach((item) => { console.log(item); return "3"; }); forEach 안에 콜백 함수가 있고 리..
ARP(Address Resolution Protocol) 컴퓨터는 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC를 기반으로 통신한다. 즉 ARP는 IP 주소로부터 MAC 주소를 구하는IP와 MAC 주소의 다리 역할을 하는 프로토콜이다. ARP: 가상 주소인 IP -> 실제 주소인 MAC로 변환 RARP: 실제 주소인 MAC -> 가상 주소인 IP 주소로 변환 -ARP의 주소 찾기 ARP Request 브로드캐스트를 보냄 -> 원하는 IP 주소를 가진 장치를 찾음 -> 찾아진 장치에서 APR reply 유니캐스트를 이용해 MAC 주소를 반환 -> 원하는 MAC 주소 얻음 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 유니캐스트: 고유 주소로 식별된 하..
제네릭 -틀린 예시 function add(x: string | number, y: string | number): string | number { return x + y; } add(1, 2); // 3 add("1", "2"); // '12' add(1, '2') // '12' add('1', 2) // '12' 타입을 이렇게 정하면 아래 2줄 같은 경우 때문에 에러가 난다. -제네릭 틀린 예시 function add(x: T, y: T): T { return x + y; } add(1, 2); // 3 add("1", "2"); // '12' add(true, false); add(1, "2"); // '12' add("1", 2); // '12' T는 다 같은 타입이라는 의미이다. 하지만 add(..
트랜잭션 트랜잭션은 DB에서 하나의 논리적 기능을 수행하기 위한 작업 단위이다. 즉 DB에 접근하는 방법은 쿼리라서 이 여러 개의 쿼리를 하나로 묶는 단위이다. ACID 특징이 있고 원자성, 일관성, 독립성, 지속성을 의미한다. 원자성(atomicity) 원자성은 "all or nothing"이다. 즉 모두 수행되었거나 되지 않았거나이다. 따라서 트랜잭션을 커밋했는데 문제가 발생하면 롤백을 해 아무것도 수행되지 않는다. -예시 강아지 잔고: 500만원, 고양이 잔고 0원, 이 때 강아지가 고양이에게 300만원을 보낸다. 강아지 잔고 조회 -> 강아지 잔고 -300만원 -> 고양이 잔고 +300만원 이 경우에 작업을 취소하면 다시 강아지는 500만원, 고양이는 0원을 가져야 한다. 그렇기에 모든 작업을 실..
해결법 -내 풀이 나는 몇 개가 중복되는지 체크하는 count 변수, 가장 최근에 어떤 문자가 나왔는지 저장하는 now 변수를 두고 문제를 풀었다. for 문으로 돌면서 만약 count가 0이면 answer에 문자를 추가하고 count, now를 갱신했다. 그리고 count가 0이 아니고 현재 문자가 가장 최근 문자와 같으면 count++를 했다. count가 1 초과면 또 다시 now, count, answer을 갱신했다. 마지막 if문을 안하면 'aaa'라는 문자를 입력했을 때, a만 나오기 때문에 이렇게 해줬다. 내 코드 강사님 해결법 우선 입력한 문자열 맨 뒤에 공백 문자를 추가한다. 그리고 처음 문자부터 (전체 길이 - 1)까지 반복한다. 왜냐하면 공백 문자를 추가했기 때문이다. 이러고 지금 문..