본문 바로가기

공부/Algorithm

(7)
[JS] 귤 고르기 (Map 사용하기) 문제 풀이해당 문제에서 구해야 하는 것은 귤 k개를 고를 때, 귤의 크기 차이를 최소화 하는 것이다.아이디어는 단순하게, 크기가 많은 것부터 선택해야 차이가 나는 귤의 종류를 최소화할 수 있다.주어진 배열에 크기에 따른 귤의 개수를 알아야 하므로 Map을 사용해서 구현했다. Mapkey-value 쌍의 형태로 데이터를 저장하는 자료구조이다.객체와 비슷하지만, 객체의 key 타입은 문자열과 Symbol만 가능하지만, Map은 문자열, 함수, 배열 등 모든 자료형이 가능하다는 차이점이 있다. 1. key-value 형태의 이터러블을 인수로 전달const map = new Map(); // Map(0) {}const map = new Map([['k1', 'v1'], ['k2', 'v2']]) // Map(..
[JS] 소수 찾기 (에라토스테네스의 체) 소수는 1과 자기 자신만을 약수로 가지는 수를 말한다.소수를 구하는 대표적인 방법으로는 brute force로 제곱근까지 단순 나눗셈을 하는 방법, 에라토스테네스의 체가 있다. 에라토스테네스의 체를 구현해보고, gpt와 함께 개선점을 찾았다 에라토스테네스의 체 O(N * log log N)에라토스테네스의 체는 다수의 소수(2~n)를 빠르게 구할 수 있는 알고리즘이다. 2부터 시작해서, 방문한 수의 모든 배수를 지우는 방법이다 (배수는 당연히 소수가 아니므로)결과적으로 남은 수는 모두 소수이다. 첫번째 코드개념을 보고 적용한 방법이다.function solution(n) { var answer = 0; const arr = Array(n+1).fill(true) // n+1 만큼의 배열을..
[JS] XOR을 사용하여 temp 를 사용하지 않고 swap하는 방법 XOR (exclusive OR : 배타적 논리합)다르면 1, 같으면 0을 반환하는 XOR XOR을 사용하여 let temp 를 사용하지 않고 swap하는 방법비트 연산을 사용하는 방법인데, 변수를 할당하지 않는 특이한 방법이라 신기했다 예를 들어 5,7의 순서를 바꾸어 보자w = 5 = 0101h = 7 = 0111 w^=h : 0010 // 2 (w = w^h)h^=w : 0101 // 5 (h = h^w)w^=h : 0111 // 7 (w = w^h) 따라서 w,h 는 swap 되었다 빠밤
[JS] 시저 암호 charCodeAt( idx )문자열에서 특정 위치에 있는 문자의 유니코드 값(숫자)let str = "Hello";let code = str.charCodeAt(0); // 0번 인덱스console.log(code); // 출력: 72 ('H'의 유니코드 값) fromCharCode유니코드 값에 해당하는 문자 반환let charCode = 65;let char = String.fromCharCode(charCode);console.log(char); // 출력: 'A' 먼저 유니코드의 자주쓰는 숫자는 다음과 같다32 : 공백48~57 : 숫자65~90 : 대문자97~122 소문자  그래서 코드를 대문자 케이스로 설명 하면, 1. 각 문자의 유니코드를 비교해서 해당 문자가 'A'(65) ~ 'Z'(90)..
[JS] 핸드폰 번호 가리기 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 핸드폰 뒷자리 4자리를 제외한 나머지를 * 으로 출력하고, slice를 통해 -4 다음을 복사해서 문자열을 연결한다function solution(phone_number) { var answer = ''; answer = '*'.repeat(phone_number.length-4) + phone_number.slice(-4) return answer;}
[JS] 숫자 문자열과 영단어 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문자로 작성된 글자가 있다면 모두 숫자로 바꿔야하는 조건으로, words 배열을 돌면서 해당 문자가 s 문자열에 있다면, 모두 숫자로 바꾼다function solution(s) { words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] for(let i=0; i