✏️기록하는 즐거움
article thumbnail
[프로그래머스] 짝수와 홀수 - level 1 (javascript)
Algorithm/Programmers 2022. 7. 4. 21:52

코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" programmers.co.kr | 제출 function solution(num) { return num % 2 === 0 ? 'Even' : 'Odd' } | 풀이과정 num을 나누었을 때 나머지가 0이면 짝수이므로 Even을, 그렇지 않으면 홀수이므로 Odd를 반환한다. 0 % 2 = 0 이므로 짝수로 인식되어 코드 한 줄로 문제를 풀 수 있다. | 개념 삼항연산자 if문의 축약된 형태 ?(물음표) 앞에 조건문이 들어가고 그..

article thumbnail
[프로그래머스] 최대공약수와 최소공배수 - level 1 (javascript)
Algorithm/Programmers 2022. 7. 4. 21:46

코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr | 제출 function solution(n, m) { const gcd = (a, b) => { return b == 0 ? a : gcd(b, a % b); } const lcm = (a, b) => (a * b) / gcd(a, b); return [gcd(n, m), lcm(n, m)]; } | 풀이과정 최대공약수는 유클리드 호제법을 사용해서 쉽게 구할 수 있다. 두 수 m과 n이 있을 때 m * n = 최대공약수 * 최소..

article thumbnail
최대공약수와 최소공배수 알고리즘 - 유클리드 호제법 (자바스크립트)
Algorithm/Capsule 2022. 7. 4. 21:44

| 최대공약수와 최소공배수 60과 48의 최대공약수는 좌측의 값들을 곱한 2 * 2 * 3 = 12 이고, 최소공배수는 12 * 5 * 4 = 240이다. 따라서, 최대공약수(Greatest Common Divisor, GCD)와 최소공배수(Lowest Common Multiple, LCM)를 곱한 값은 주어진 두 수의 곱과 같다는 식이 성립된다. | 최대공약수 구하기, 유클리드 호제법 유클리드 호제법이란 자연수의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 두 수가 서로(互) 상대방 수를 나누어(除)서 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수 a, b에 대해서 a가 b보다 클 때 a를 b로 나눈 나머지를 r이라 하면, a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 ..

article thumbnail
[프로그래머스] 콜라츠 추측 - level 1 (javascript)
Algorithm/Programmers 2022. 7. 2. 22:59

코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr | 제출 function solution(num) { let count = 0; if(num === 1){ return 0; } while(num !== 1){ if(num % 2 === 0){ num = num / 2; } else{ num = num * 3 + 1; } count ++; } return count > 500 ? -1 : count; } | 풀이과정 입력된 숫자가 1이면 0을 반환하고, 1이 아니라면 반복적인 작..

article thumbnail
[프로그래머스] 평균 구하기 - level 1 (javascript)
Algorithm/Programmers 2022. 6. 30. 23:45

코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr | 제출 function solution(arr) { return arr.reduce((a, b) => a + b) / arr.length; } | 풀이과정 reduce() 메서드를 사용해서 배열의 모든 값을 더해준 후, 배열의 길이로 나누어 평균을 구한다. | 개념 Array.prototype.reduce() 배열의 각 요소에 대해 주어진 reducer 함수를 실행한 결과값을 반환한다. 더보기 - 개..

article thumbnail
[프로그래머스] 하샤드 수 - level 1 (javascript)
Algorithm/Programmers 2022. 6. 30. 23:31

코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr | 제출 function solution(x) { let answer = true; let sum = 0; for (let i = 0; i < String(x).length; i++) { sum += Number(String(x)[i]); } answer = x % sum === 0; return answer; } | 풀이과정 숫자인 x를 String으로 형 변환 후 각 자리수를 sum에 더한다. x를 sum으로 나누어 떨어지면 하샤드..

article thumbnail
[프로그래머스] 핸드폰 번호 가리기 - level 1 (javascript)
Algorithm/Programmers 2022. 6. 30. 15:21

코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr | 제출 function solution(phone_number) { return phone_number.replace(/\d(?=\d{4})/g, "*"); } | 풀이과정 replace() 메서드와 정규 표현식을 사용해서 뒤에 4자리를 제외하고 *로 교체한다. console.log("123456".replace(/\d{4}/g, "*")); //*56 \d{4} : 숫자가 4개면 *로 교체한다. console.log("123456".r..

article thumbnail
[백준] 10809: 알파벳 찾기 (javascript)
Algorithm/Baekjoon 2022. 6. 28. 14:29

Link 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 > 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 > 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구..

article thumbnail
[백준] 11720: 숫자의 합 (javascript)
Algorithm/Baekjoon 2022. 6. 28. 13:15

Link 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 > 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 > 입력으로 주어진 숫자 N개의 합을 출력한다. | 예제 입력 5 54321 | 예제 출력 15 제출 const input = ( process.platform === "linux" ? require("fs").readFileSync("/dev/stdin").toString() : `5 54321` ).split("\n")..

article thumbnail
[백준] 11654: 아스키 코드 (javascript)
Algorithm/Baekjoon 2022. 6. 28. 13:11

Link 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 > 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 > 입력으로 주어진 글자의 아스키 코드 값을 출력한다. | 예제 입력 A | 예제 출력 65 제출 const input = ( process.platform === "linux" ? require("fs").readFileSync("/dev/stdin").toString() : `A` ).trim(); cons..