본문 바로가기

자료구조&알고리즘17

프로그래머스 Lv.2 이진 변환 반복하기 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/70129 문제에 변환 단계가 여러단계라서 헷갈릴 수 있다. 이 글에는 생략했으나 문제 링크로 이동시 입출력 예시에 대한 설명이 자세히 나와 있다. 문제를 자세히 읽어보면, 변환해야 하는 것이 "문자열 → 0을 제거(기록필요) → 제거하고 남은 수의 자릿수 계산 → 자릿수를 2진수로 변환" 이렇게 진행하는 것을 한번의 변환으로 보고, 이 변환을 2진수가 1이 될때까지 반복한다. 최종적으로 총제거한 0의 수와 변환 횟수를 구하면 된다. 풀이 나의 풀이 function solution(s) { var answer = [0, 0]; //정답의 초기값을 모.. 2022. 9. 17.
프로그래머스 Lv.1 최대공약수와 최소공배수 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12940 두 수의 최대공약수와 최소 공배수를 구하는 문제중 가장 기본 문제이다. 풀이 최대공약수, 최소공배수가 응용된 문제들이 좀 보여서 정리를 위해 기본 문제를 풀어보았다. 최대공약수 / 최소공배수 란? : 주어진 수들의 공통 약수 / 배수에서 가장 큰 값 / 작은값 이다. 그래서 이 정의를 이용한 방법도 있으나, 유클리드 호제법을 사용하는것이 유리하므로 두가지 경우를 모두 정리해보았다. for문 사용 function solution(n, m) { var answer = []; let a = Math.min(n, m); let b = Math.m.. 2022. 9. 17.
프로그래머스 Lv.1 로또의 최고 순위와 최저 순위 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 기출문제입니다. [문제 설명] 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되.. 2022. 9. 10.
프로그래머스 Lv.1 약수의 합 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12928 입력받은 수의 약수의 합을 구하는 문제이다. 소수 찾기의 반대로 생각하면 된다. 소수찾기에 대한 내용은 다음 글에 정리하였다. 2022.09.03 - [자료구조&알고리즘/개념 및 이론] - 소수 구하기 (자바스크립트) 소수 구하기 (자바스크립트) 소수 (Prime number) 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수이다. 정수론에서 매우 중요한 주제이며, 특히 현대사회에서 암호학에서 많이 사용하여서 매우 중요해졌다. 출 peach-milk.tistory.com 풀이 나의 풀이 function solution(n).. 2022. 9. 10.
프로그래머스 Lv.1 문자열 내림차순으로 배치하기 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12917 문자열을 대소문자를 구분해서 내림차순으로 정렬하는 문제이다. 풀이 나의 풀이 function solution(s) { return s.split("").sort().reverse().join("") } Study more... 문제를 결국 풀긴했는데 처음에 sort((a,b) => (b - a)) 의 형식으로 풀었더니 정렬이 되지 않았다. 그래서 sort함수에 다시 살펴보았다. (출처: MDN) Array.Prototype.sort() 메서드와 문자열 정렬 - 배열의 요소를 정렬하는 메소드이며, 기본 정렬 순서는 유니코드 코드 포인트를 따.. 2022. 9. 10.
소수 구하기 (자바스크립트) 소수 (Prime number) 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수이다. 정수론에서 매우 중요한 주제이며, 특히 현대사회에서 암호학에서 많이 사용하여서 매우 중요해졌다. 출처: 위키백과 소수 판별하기 (JavaScript) 소수를 판별하는 방법은 여러가지가 있다. 그 중 아래의 두가지를 소개한다. 이 판별법은 입력값이 소수인지 아닌지를 판별하는 방법이다. 이를 응용해서 소수의 개수를 구할수도 있다. 반복문 (제곱근으로 최적화 가능) 에라토스테네스의 체 1. 반복문 1) 가장 기본적인 방법으로 반복문을 수행하면서 1이외의 수로 나누어 떨어지지 않는지 확인한다. 이때 시간복잡도는 O(n)이 된다. function isPrime(num) { if(num === 1) return .. 2022. 9. 3.
프로그래머스 Lv1. 2016년 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 입력받은 날의 요일을 특정한 문자열로 반환하는 문제이다. - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12901 풀이 나의 풀이 Date객체를 생성해서 getDay()를 통해 요일값을 얻은 후 switch문을 사용해서 매우 긴 코드를 작성하였다. function solution(a, b) { var answer = new Date(2016, a - 1, b); // Date객체 생성 answer = answer.getDay(); // 요일 정보 얻기 switch (answer) { case 0: answer = "SUN"; break; case 1: answer = "MON"; break; c.. 2022. 9. 3.
프로그래머스 Lv.1 같은 숫자는 싫어 (JavaScript) 자바스크립트로 프로그래머스 문제 풀기 문제 - 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12906 배열안에 같은 숫자가 연속되지 않게 하는 문제이다. 풀이 나의 풀이 function solution(arr) { var answer = []; for(let i = 0; i < arr.length; i++) { if(answer[answer.length - 1] === arr[i]) continue; answer.push(arr[i]); } return answer; } 배열을 순회하면서 answer 배열 마지막의 값이 집어넣으려는 값과 동일하지 않을때만 push한다. 다른 사람들 풀이 function solution(arr) { retu.. 2022. 8. 27.