알고리즘/프로그래머스
[프로그래머스/자바스크립트(JavaScript)] 나누어 떨어지는 숫자 배열
[프로그래머스/자바스크립트(JavaScript)] 나누어 떨어지는 숫자 배열
2021.09.18🎯 나누어 떨어지는 숫자 배열 📁 문제 출처 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 💡 생각 나누어 떨어지는 요소를 배열에 저장 저장된 배열의 길이가 0이면 -1 push, 아니면 오름차순 정렬 🛠 나의 코드 function solution(arr, divisor) { let ans = []; arr.forEach(num => { if(num % divisor === 0) { ans.push(num) } }) ans.length ==..
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 마음대로 정렬하기
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 마음대로 정렬하기
2021.09.17🎯 문자열 내 마음대로 정렬하기 📁 문제 출처 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 💡 생각 첫 번째 조건인 n번째 인덱스를 기준으로 정렬해주고, n번째 알바펫이 같으면 사전 순으로 정렬해주면 모든 조건을 충족시킨다. 🛠 나의 코드 function solution(strings, n) { let answer = strings.sort((a, b) => { if(a[n] > b[n]) { return 1; } if(a[n] < b[n..
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 p와 y의 개수
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 p와 y의 개수
2021.09.17🎯 문자열 내 p와 y의 개수 📁 문제 출처 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 💡 생각 모두 대문자로 변경하고 p, y에 대해서 count를 해준다. 🛠 나의 코드 function solution(s){ s = s.toUpperCase(); let pCnt = 0; let yCnt = 0; s.split('').forEach(el => { if(el === 'P') { pCnt++; } else if(el === 'Y') {..
[프로그래머스/자바스크립트(JavaScript)] 문자열 내림차순으로 배치하기
[프로그래머스/자바스크립트(JavaScript)] 문자열 내림차순으로 배치하기
2021.09.17🎯 문자열 내림차순으로 배치하기 📁 문제 출처 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 programmers.co.kr 💡 생각 자바스크립트는 유니코드 순으로 정렬해준다. let arr = [90, 98, 99, 100, 101, 102, 103] arr.sort(); // [100, 101, 102, 103, 90, 98, 99] 이렇게 우리와 의도와 다르게 정렬이 된다. 자바스크립트 오름차순 정렬 arr.sort(function(a, b) { return a - b; }); 자바스크립트 내림차순 정렬 ..
[프로그래머스/자바스크립트(JavaScript)] 문자열 다루기 기본
[프로그래머스/자바스크립트(JavaScript)] 문자열 다루기 기본
2021.09.17🎯 문자열 다루기 기본 📁 문제 출처 코딩테스트 연습 - 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 programmers.co.kr 💡 생각 isNaN으로 숫자/문자를 판별하려고 했으나 알파벳 e를 밑수 10으로 인식해서 오류 발생! replace로 문자 e를 다른 문자로 변환 그리고 길이 4 or 6으로 이루어졌다고 하니까 s.length가 4 or 6이 아니면 false 🛠 나의 코드 function solution(s) { let ans = true; s = s.replace('e', 'm') ..
[프로그래머스/자바스크립트(JavaScript)] 소수 찾기 (feat. 에라토스테네스의 체)
[프로그래머스/자바스크립트(JavaScript)] 소수 찾기 (feat. 에라토스테네스의 체)
2021.09.17🎯 소수 찾기 📁 문제 출처 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 💡 생각 소수는 에라토스테네스의 체로 구해놓고 풀면 시간 복잡도를 줄일 수 있다. 자바스크립트 에라토스테네스의 체 function prime() { let n = 1000000; let arr = Array(n + 1).fill(true).fill(false, 0, 2); for (let i = 2; i < Number(n ** 0.5) + 1; i++) { if (arr[i]) { for (let j = i..
[프로그래머스/자바스크립트(JavaScript)] 수박수박수박수박수박수?
[프로그래머스/자바스크립트(JavaScript)] 수박수박수박수박수박수?
2021.09.17🎯 수박수박수박수박수박수? 📁 문제 출처 코딩테스트 연습 - 수박수박수박수박수박수? 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 programmers.co.kr 💡 생각 n이 짝수면 repeat으로 n/2만큼 반복 n이 홀수면 parseInt(n / 2)로 몫만큼 repeat 해주고 마지막에 '수'만 더해주기 🛠 나의 코드 function solution(n) { let ans = ""; if(n % 2 === 0) { ans += "수박".repeat(n / 2); } else { ans += "수박".repeat(parseInt(n / 2..
[프로그래머스/자바스크립트(JavaScript)] 시저 암호
[프로그래머스/자바스크립트(JavaScript)] 시저 암호
2021.09.17🎯 시저 암호 📁 문제 출처 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 💡 생각 문자열을 아스키코드로 변환해서 대소문자 구별해서 풀기 대문자 : 65~90 소문자 : 97~122 fromCharCode과 charCodeAt를 사용해서 풀기 🛠 나의 코드 function solution(s, n) { let ans = ''; s.split('').forEach(el => { if (el === " ") { ans += el } else { ans += String.fromCha..
[프로그래머스/자바스크립트(JavaScript)] 이상한 문자 만들기
[프로그래머스/자바스크립트(JavaScript)] 이상한 문자 만들기
2021.09.17🎯 이상한 문자 만들기 📁 문제 출처 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 💡 생각 공백 기준으로 단어를 배열에 넣어주고 배열에 넣어준 단어를 split으로 쪼개서 인덱스로 짝수는 대문자, 홀수는 소문자로 변환해서 answer에 더해준다. 한 단어의 반복문이 끝났을 때는 공백을 넣어주고 모든 배열을 다 돌면 마지막에 공백이 추가되어서 slice로 잘라주기 🛠 나의 코드 function solution(s) { let answer = ''; s.split(' ').forEach((el) ..
[프로그래머스/자바스크립트(JavaScript)] 자연수 뒤집어 배열로 만들기
[프로그래머스/자바스크립트(JavaScript)] 자연수 뒤집어 배열로 만들기
2021.09.17🎯 자연수 뒤집어 배열로 만들기 📁 문제 출처 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 programmers.co.kr 💡 생각 숫자 -> 문자형으로 배열 넣기 -> reverse() -> 새로운 배열에 숫자로 push() 🛠 나의 코드 function solution(n) { let answer = [] let temp = String(n).split('').reverse() for (let i = 0; i < temp.length; i++) { answer..
[프로그래머스/자바스크립트(JavaScript)] 정수 제곱근 판별
[프로그래머스/자바스크립트(JavaScript)] 정수 제곱근 판별
2021.09.17🎯 정수 제곱근 판별 📁 문제 출처 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr 💡 생각 제곱근을 구했을 때 정수면 (제곱근 + 1) * 2 return 정수 판별은 Number.isInteger() 사용 🛠 나의 코드 function solution(n) { let answer; if (Number.isInteger(n ** 0.5)) { answer = ((n ** 0.5) + 1) ** 2 } else { answer = -1 } return answer; } 리팩토링 ..
[프로그래머스/자바스크립트(JavaScript)] 제일 작은 수 제거하기
[프로그래머스/자바스크립트(JavaScript)] 제일 작은 수 제거하기
2021.09.17🎯 제일 작은 수 제거하기 📁 문제 출처 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 💡 생각 배열에서 가장 작은 수 찾기 -> Math.max.apply(null, arr)사용 apply란? this 값과 배열 (또는 유사 배열 객체)로 제공되는 arguments로 함수를 호출한다. 개발할 때는 파라미터를 많이 보내면 안 된다. apply를 사용하면 최소의 파라미터를 사용할 수 있다. 첫 번째 파라미터가 null인 이유는 메서드 안의 this는 해당 스코프..