분류 전체보기 536

약수 구하기

약수를 구하는 알고리즘에는 몇 가지 방법중 가장 일반적이고 효율적인 방법기본적인 방법:1부터 해당 숫자까지 모든 수로 나누어 보는 방법입니다.시간 복잡도: O(n)제곱근을 이용한 최적화 방법:숫자의 제곱근까지만 검사하는 방법입니다.시간 복잡도: O(√n)제곱근을 이용한 최적화 방법의 알고리즘은 다음과 같습니다:주어진 수 n의 제곱근까지 반복합니다.i가 n의 약수라면, i와 n/i 모두 약수입니다.i와 n/i가 같지 않은 경우에만 두 수를 모두 약수 목록에 추가합니다.예를들어 36의 약수를 구하면 const res=[1]; const divisor=n=>{ let i=2; for(i; ia-b));n = 36Math.sqrt(36) = 6, 따라서 i는 1부터 6까지 반복합니..

알고리즘 2024.09.12

Array.reduce 여러가지 사용 사례

사례 1 사용: 숫자 합산reduce()의 가장 간단한 사용 사례 중 하나는 여러 숫자를 합산하는 것입니다.정수 배열이 있고 총합을 구하고 싶다고 가정해 보겠습니다.// 반복문 사용const numbers = [1, 2, 3, 4, 5];let sum=0;for(let i=0; iacc+curr, 0);console.log(sum);와우! 코드 한 줄만으로 배열의 모든 요소의 합을 계산했습니다.어큐뮬레이터의 초기 값은 0으로 설정되고 각 반복에서 현재 요소를 어큐뮬레이터에 추가합니다.시작 값을 제외하기로 선택하면 reduce는 배열의 첫 번째 항목만 사용합니다.하지만 저는 항상 초기 값을 포함하는 경향이 있어서 읽기가 더 쉽습니다.사용 사례 2: 배열 평면화여러분은 여러 배열을 보면서 "이걸 하나의 배열..

프로그래밍/Js 2024.08.27

[es6] 단축평가 예제 (short-circuit evaluation)

acc[curr] = (acc[curr] || 0) + 1;JavaScript의 논리 연산자(||)의 특성을 활용한 매우 간결하고 효과적인 패턴입니다. 이를 "단축 평가(short-circuit evaluation)"라고 부르기도 합니다.이 패턴의 작동 원리를 더 자세히 설명해 드리겠습니다:논리 OR 연산자(||)의 특성:JavaScript에서 ||는 왼쪽 피연산자가 truthy면 왼쪽 피연산자를 반환합니다.왼쪽 피연산자가 falsy면 오른쪽 피연산자를 반환합니다.Falsy 값:JavaScript에서 falsy 값은 false, 0, '', null, undefined, NaN입니다.객체의 존재하지 않는 속성에 접근하면 undefined를 반환합니다.이 패턴의 동작:acc[curr]가 존재하면(즉, 0이..

프로그래밍/Js 2024.08.26

제네레이터(generator) 의 실무 적용

개요사이트 처음 접속시 레이어 팝업을 4개 open 합니다.그런데 무작정 띄우는게 아니라 첫번째 레이터 팝업 닫으면 그다음 레이어 팝업 뜨고 또 닫으면 그다음 팝업이 떠야 합니다.알고리즘을 어떻게 구현할까 생각하다 generator 를 사용하여 팝업 닫으면 그 다음 레이어 팝업을 뜨게 구현합니다.실제 코드는 아래코드보다는 많이 복잡하지만 제네레이터 사용 방법을 알고자 간단한 코드로 처리했습니다.html ~~~ 팝업 1 내용 닫기 ~~~ 팝업 2 내용 닫기 ~~~ 팝업 3 내용 닫기 ~~~ 팝업 4 내용 닫기위 코드는 다음과 같이 작동합니다:popupIds 배열에 모든 팝업의 ID를 저장합니다.currentPopup은 현재 열려있는 팝업의 ID를 저장하는 반응형 참조(ref)입니다.p..

프로그래밍/Js 2024.08.23

템플릿 메소드(Template Method) 패턴 실제 적용 사례 - 디자인 패턴

개요본 문서는 본인의 개발향상과 기억의 장기화를 위해 기록해두기 위해 사용한 문서로 존칭은 생략하기로 한다.FX 개발도중 사용자마다 원가 + 마진 + 마크업이란 수수료가 붙는 로직이 있는데 템플릿 메소드 패턴을 사용하여 구현하였다.템플릿 메소드 패턴을 설명하기 위해 세부 코드는 생략하였고 큰 틀에서 설명하기로 한다.아래는 공식인데 약식으로 설명한다.- 일반환율(USDKRW 비롯한 KRW 없는것 즉 USDJPY, EURUSD 등)- 재정환율(USDKRW 제외한 ~/KRW 있는것 즉 JPYKRW EURKRW 등): 일반환율 .바로환전 bid=원가 + 원천마크업 + 바로환전마진 ask=원가 + 원천마크업 + 바로환전마진 .현물환 bid=원가 + 원천마크업 + 마크업 + 스왑 + 마진..

객체지향 2024.08.23

이기종간 데이터 변환(한글) 전문에 한글 전송 방법

전문 Input 값에 한글이 들어가는경우 한글을 그대로 사용하면 안된다.한글을 Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입으로 변환해야 합니다.console.log( iconv.encode('홍길동', 'euc-kr') )iconv.encode('홍길동', 'euc-kr')의 결과로 받은 Uint8Array [200,171,177,230,181,191]는 "홍길동"이라는 한글 문자열을 EUC-KR 인코딩으로 변환한 바이트 배열입니다. 이를 자세히 설명하겠습니다:Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입입니다.각 숫자는 EUC-KR 인코딩에서 해당 한글 문자를 나타내는 바이트 값입니다:[200,..

프로그래밍/Js 2024.08.22

재귀함수 -> 꼬리물기 재귀함수 -> 반복문

재귀함수를 꼬리 재귀 함수로 변환하고, 그 다음 반복문으로 변환하는 것은 재귀 호출을 명시적인 반복 구조로 바꾸는 과정입니다. 꼬리 재귀는 함수의 마지막 작업이 자기 자신을 호출하는 형태로, 이론적으로는 반복문으로 쉽게 변환할 수 있습니다.꼬리 재귀를 반복문으로 바꾸는 이유는 스택오버플로우 때문입니다.그렇게 때문에 꼬리재귀함수 와 반복문간의 코드 변환은 자유자재로 할수 있어야 합니다.재귀함수 문제 중에서 다른 문제로는 다음과 같은 것들이 있습니다.https://www.youtube.com/watch?v=h80tLv0fn88&list=PLBNdLLaRx_rKOFzA3txlG5rf9ZaVUuvmv&index=210분정도 후 부터 tail recursion 보시면 됩니다. 1. 피보나치 수열피보나치 수열은 각..

알고리즘 2024.08.20

vue3 부모->자식 자식->부모 데이터 전달방법

부모에서 자식으로 데이터 전달부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하기 위해 props를 사용합니다.ParentComponent.vue ChildComponent.vue 자식에서 부모로 데이터 전달자식 컴포넌트에서 부모 컴포넌트로 데이터를 전달하기 위해 emit을 사용합니다.ChildComponent.vue Send Message to ParentParentComponent.vue {{ childMessage }} 위 예제에서는 부모 컴포넌트에서 자식 컴포넌트로 메시지를 props를 통해 전달하고, 자식 컴포넌트에서 부모 컴포넌트로 메시지를 emit을 통해 전달합니다. props와 emit을 함께 사용하여 부모와 자식 컴포넌트 간의 데이터를 효과적으로 주고받을 수..

프로그래밍/Js 2024.08.12

인텔리제이 2020.3 에서 java 17 -> java 11 spring boot 3 -> 2

인텔리제이 2020.3 에서는 java 17  작동이 안된다.java17 사용하려면 인텔리제이 버전을 높여야 한다. 그렇지 않으면 java 11로 낮추어야 하는데 스프링 부트 3은 java 17 부터 지원하기 때문에스프링 부트를 2로 내리는 방법을 알리고자 한다. 1. project SDK 는 java 11 로 한다.Java version 17 21 22 만 나온다.일단 17 로 하자2. 프로젝트 완료된 후 pom.xml 에서 스프링 부트 버전을 2버전으로 변경한다.3. 톰캣 시작후 정상적으로 안되면 아래 restart 한다.