JavaScript(17)
-
TypeScript의 Type선언
TS은 JS 기반의 언어이다. TS와 JS의 차이는 Type지정 여부이다. Type을 지정함으로써 나타나는 장점은 아래와 같다. Type관련 오류발생 저하 JS보다 빠른 속도 원하는 Type으로 지정가능 함수 - 함수 선언식 function funcName(param1: type1, param2: type2): resultType{ ... return ... } - 함수 표현식 const funcName = (param1: type1, param2: type2): resultType => ...; - return값이 없는 함수 function funcName():void { ... } 변수 let strVar: string = '문자열'; let numVar: number = 1; let nullVar:..
2023.04.25 -
[프로그래머스] 소수 찾기
소수는 1과 자기자신 외의 약수를 갖지 않는 수이다. 소수를 판별하기 위해 2부터 자기자신-1 까지 나누어지는지 확인해야 한다. 아래 두가지 방법을 통해 효율성을 높일 수 있다! 1. 약수는 짝을 가진다는 특징을 활용 10 = (1, 10), (2, 5), (5, 2), (10,1) 16 = (1,16), (2, 8), (4, 4), (8, 2), (16, 1) 이 짝은 자신의 양의 제곱근을 기준으로 지어진다. (10 -> 3.162.. 16 -> 4 ) 따라서, 2부터 자신의 양의 제곱근 까지 나누어지는지 확인하면 된다! 2. 모든 짝수는 소수가 아니다라는 특징을 활용 모든 짝수는 2로 나누어지기 때문이다. 따라서, 짝수의 소수 여부를 확인하지 않아도 되고(소수가 아니기 때문) 나머지 값들을 2의 배수..
2023.03.16 -
[프로그래머스] 뉴스 클러스터링
자카드 유사도는 원소의 중복을 허용하는 다중집합에 대해서 확장한 문제이다. 1. 대소문자를 구분하지 않으므로 대문자로 통일(toUpperCase()) 2. str1, str2의 부분 집합 구함: 부분 집합에 문자 이외의 값이 없을 경우만 추가 3. str1, str2의 모든 부분 집합을 중복없이 구함 4. 모든 부분 집합이 str1, str2에서 몇 번 나오는지 구함 5. 모든 부분 집합의 교집합, 합집합 수를 구함 5-1. 교집합의 개수: str1, str2의 등장 최소값 5-2. 합집합의 개수: str1, str2의 등장 최대값 6. (교집합/합집합) * 65536 , 소수점 버리고 return 자세히 주석 달아두었으니 확인 !! function solution(str1, str2) { // 대소문자..
2023.03.15 -
[프로그래머스] 타겟 넘버
주어진 리스트 값을 하나씩 접근하며 -, +부호를 달아주는 문제이다. DFS/BFS를 활용한 문제라고 한다. 이 문제를 풀면서 DFS/BFS와 완전탐색의 차이가 무엇인지 궁금해졌다. * 완전탐색을 베이스로 한 그래프 탐색 기법이다..! [1,1,1] 리스트와 [+, -]를 사용해 숫자 1을 만들 수 있는 경우의 수를 구하려면, 모든 방법을 확인해보아야 한다. 1. list의 idx 0의 값에 - 또는 + 부호를 할당하고, 합계를 나타내는 sum에 저장한다. 2. -1 / +1 을 각각 저장한 sum이 2개가 된다. * 이게 cache에 저장한다고 하는건가? 3. 두 sum에 각각 idx 1의 값에 -또는 + 부호를 할당 한 값을 저장한다. 따라서 sum이 4개가 된다. 4. 이를 idx가 끝에 도달할 때..
2023.03.10 -
동적 계획법(Dynamic Programming)
동적 계획법: 하나의 문제를 여러 작은 문제로 나누고, 작은 문제의 결과를 저장하여 큰 문제를 해결한다. 하나의 문제를 여러 개의 하위 문제로 나눈 다음, 결합하여 답을 도출한다. 하위 문제들의 결과를 저장한다.(Memoization, 메모이제이션) -> 동일한 문제가 나왔을 때 저장해둔 결과를 가져다 쓰며, 실행속도 빠르게 한다. 겹치는 부분 존재 DP는 작은 문제의 결과를 저장하고 재사용하여 문제를 푼다. 따라서, 동일한 작은 문제가 있을 때 사용한다. 최적 부분 구조 작은 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 수 있는 경우를 의미한다. 작은 문제에서 구한 최적의 결과가 큰 문제에서도 동일하게 최적으로 적용되는 경우이다. 동적계획법의 가장 대표적인 피보나치 수를 구현해보자! 피보..
2023.03.10 -
[프로그래머스] N으로 표현
동적계획법(Dynamic Programming)을 사용한 문제이다. 모든 값을 연산해봐야 한다는 것은 이해를 했다. 근데, 도대체 어떻게 구현해야 하는지 완전탐색과 다른것은 무엇인지... * 동적계획법을 공부하면서 완전탐색과는 완전히 다르다는 것을 알았다. 헷갈린다면, https://chyunlog.tistory.com/34 참고! 따라서 다른 분의 풀이를 해석해보기로 했다. 완전탐색처럼 도대체 컴퓨터 안에서 어떻게 돌아가는지 헷갈리지만... 주석을 꼼꼼히 달아놨으니 이해하는데 도움이 되길! function solution(N, number) { // 최솟값이 8보다 크면 -1을 return 합니다.라는 제한사항이 있기에 // 1~8까지의 경우의 수를 저장할 길이 8인 배열을 만든다. // 배열의 각 값..
2023.03.09