본문 바로가기

프로그래머스

(6)
[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] 시저 암호 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
[JS] 이진 변환 반복하기 반복문을 사용하는 것보다 내장 메소드를 사용하는 것이 더 빠르다function solution(s) { let cnt = 0 // 변환 횟수 let zero = 0 //제거한 0 개수 while(s!=='1'){ let current = s.split('').filter(t => t==='0').length // 0의 개수 zero+=current s=s.replaceAll('0', '') // 0제거 let length = s.length // 0을 제거한 길이 s = length.toString(2) // 현재 길이를 2진 변환 cnt+=1 } return [cnt, zero];}