본문 바로가기

프로그래머스

(47)
[프로그래머스 MySQL] Level1 SELECT 선택할 column FROM 내용을 가져올 테이블 WHERE 조건 ORDER BY 오름차순/내림차순 정렬, default: ASC(오름차순), DESC(내림차순) 모든 레코드 조회하기 동물의 정보를 ANIMAL_ID순으로 조회 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; 역순 정렬하기 동물 보호소에 들어온 모든 동물의 이름과, 보호시작일을 조회 결과는 ANIMAL_ID 역순 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 아픈 동물 찾기 보호소에 들어온 동물 중 아픈 동물 (INTAKE_CONDITION이 Sick인 경우) 결과는 ID 순으로 SELECT ANIMAL_ID, NAME FROM ..
[프로그래머스 JavaScript] Level1 직사각형 별찍기 - 정수 n과 m이 주어집니다. - *을 가로길이가 n, 세로 길이가 m인 모양으로 출력합니다. [초기 코드] 초키 코드를 확인해보면 date는 (n, m)이고 이것을 a = Number(n), b=Number(m)으로 해놨습니다. process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); console.log(a); // 5 console.log(b); // 3 }); 이제 한 줄에 n개의 *이 찍힐 수 있도록 repeat을 이용하고, 방금 전 생성한 한 줄을 m번 반복해줍니다. process.stdin.setEnc..
[프로그래머스 JavaScript] Level1 이상한 문자 만들기 - 한개 이상의 단어로 이루어진 문자열 s가 주어집니다. - 공백은 꼭 한칸이 아닐수도 있습니다. - 단어의 짝수번째 알파벳은 대문자, 홀수번째 알파벳은 소문자로 리턴합니다. - 짝수/홀수의 기준은 공백으로 나눠 진 단어 기준입니다. 문장을 단어 기준으로 나눠줍니다. function solution(s) { var answer = '' var arr = s.split(/\s(?=\w)/) return answer; } 저는 뒤에 단어를 가지고있는 공백을 기준으로 나눴습니다. 그럼 아래와 같이 arr이 만들어지게 됩니다. 이제 단어별로 각각의 홀수/짝수 인덱스를 구분하여 대문자/소문자로 바꿔줍니다. function solution(s) { var answer = '' var arr = s.split(/\s..
[프로그래머스 JavaScript] Level1 시저 암호 - 문자열 s와 거리 n이 주어집니다. - 공백은 그대로 공백 입니다. - s는 알파벳 소문자, 대문자, 공백입니다. - n은 1 이상, 25이하인 자연수입니다. 공백을 제외한 문자들을 변경 function solution(s, n) { s.replace(/[a-z]/gi/, function() {}) } 변경 될 문자는 원래 문자를 n이라는 숫자만큼 뒤에 위치한 문자 ('z'는 1만큼 밀면 'a') 문자의 코드를 charCodeAt()으로 확인 function solution(s, n) { s.replace(/[a-z]/ig, function(c) { var code = c.charCodeAt() var newCode = 0; newCode = code > 64 && code < 91 ? ((code ..
[프로그래머스 JavaScript] Level1 문자열 내 마음대로 정렬하기 - 문자열로 구성된 리스트와, 정수 n이 주어집니다. - 각 문자열의 n번째 글자를 기준으로 문자열을 오름차순 정렬합니다. - 만약 n번째 글자가 같다면, 사전 순으로 문자열을 배치합니다. 문자열을 오름차순으로 정렬 function solution(strings, n) { strings.sort(function(a, b) { a - b }) } 문자열의 n번째 글자를 기준으로 오름차순 정렬 function solution(strings, n) { strings.sort(function(a, b) { a[n] - b[n] }) } 이때, n번째의 글자가 같다면, 사전 순으로 정렬 사전 순으로 정렬할 수 있는 메서드로는 localeCompare()이 있습니다. localeCompare()는 메서드는 배열의 ..
[프로그래머스 JavaScript] Level1 자릿수 더하기 - N의 각 자릿수의 합을 구해서 return function solution(n) { var answer = 0; answer = n.toString().split('').map(x => Number(x)); // 숫자를 문자로 변경 후 한글자씩 나눈 후 다시 숫자로 변경 answer = answer.reduce( (prev, curr) => prev + curr ) // reduce를 이용하여 합을 구함 return answer; }
[프로그래머스 JavaScript] Level1 소수 찾기 더 좋은 방법좀 알려주세요ㅠㅠ 소수 찾기를 검색하면 나오는 에라토스테네스의 체의 방법을 사용해 보았다. 2 소수이면 2의 배수는 소수가 아니다. 3 소수이면 3의 배수는 소수가 아니다. 4는 2의 배수로 소수가 아니다. n개까지 구한다고 했을 경우, n의 제곱근까지만 소수를 찾으면 된다. function solution(n) { let answer = 0; let arr = []; // 초기배열 셋팅 // 0과 1은 소수가 아니기 때문에 처음부터 0을 넣음 for (let i = 0; i
[프로그래머스 Javascript] Level1 x만큼 간격이 있는 n개의 숫자 function solution(x, n) { var answer = []; for(var i = x; answer.length < n; i += x) { answer.push(i); } return answer; }
[프로그래머스 Javascript] Level1 문자열 내림차순으로 배치하기 1. 문자열을 문자 한개씩으로 분리한다. 2. 문자를 정렬한다. 3. 문자를 큰것부터 작은 순으로 정렬한다. 4. 문자를 합쳐 문자열로 나타낸다. function solution(s) { return s.split('').sort().reverse().join(''); }
[프로그래머스 Javascript] Level1 콜라츠 추측 콜라츠 추측 : 아래의 작업을 반복하면 주어진 수를 1로 만들 수 있다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. - 위 작업을 몇 번이나 반복해야하는지 반환 - 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환 function solution(num) { var answer = 0; for(var i = 0; i < 500; i++) { // 500번까지만 반복 if(num != 1) { // 1이 아닌 경우 num = num % 2 == 0 ? num / 2 : num * 3 + 1; // 계산진행 } else { // 1인 경우 return answer = i; ..
[프로그래머스 Javascript] Level1 하샤드 수 1. 자릿수의 합을 구한다. (문자로 전환 → 한글자씩 분리 → 자릿수의 합) 2. 자릿수의 합으로 주어진 수가 나누어 떨어지는지 확인한다. 3. 하샤드 수가 맞는지 결과를 출력한다. (나누어 떨어지면 하샤드 수이다.) 1. for문을 이용하여 자릿수의 합 구하기 function solution(x) { var answer = true; var n = 0; x = String(x); for(var i = 0; i < x.length; i++) { n += Number(x[i]); } answer = x % n == 0 ? true : false; return answer; } 2. split과 reduce로 자릿수의 합 구하기 function solution(x) { var answer = true; v..
[프로그래머스 Javascript] Level1 행렬의 덧셈 function solution(arr1, arr2) { var answer = [[]]; for(var i = 0; i < arr1.length; i++) { for(var j = 0; j < arr1[i].length; j++) { arr1[i][j] = arr1[i][j] + arr2[i][j]; } } answer = arr1; return answer; }
[프로그래머스 Javascript] Level1 같은 숫자는 싫어 - 배열 arr의 각 원소는 숫자 0부터 9까지 - 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거 - 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지 - 배열 arr의 크기 : 1,000,000 이하의 자연수 for문 사용 for문으로 현재와 다음의 문자가 같은지를 체크하여 다른 경우만 새로운 배열에 추가 function solution(arr) { var answer = []; // 새로운 배열 for(var i = 0; i < arr.length; i++) { // 처음부터 끝까지 반복 arr[i] == arr[i+1] ? '' : answer.push(arr[i]); // 현재와 다음의 문자가 같은문자인지 확인 후 다를경우에만 새 배열에 추가 } retu..
[프로그래머스 Javascript] Level1 문자열 다루기 기본 - 문자열 s의 길이가 4 혹은 6 - 숫자로만 구성 - s는 길이 1 이상, 길이 8 이하인 문자열 초기 코드 숫자를 체크하기 위해서 문자열을 한번 숫자들과 대조하여 체크했었다. function solution(s) { var answer = ''; if (s.length == 4 || s.length == 6) { // 문자열의 길이가 4혹은 6 for (var i = 0; i = 0 && s[i]
[프로그래머스 Javascript] Level1 최대공약수와 최소공배수 - 두 수의 최대공약수, 최소공배수를 배열로 반환 - 두 수는 1이상 1000000이하의 자연수 function solution(n, m) { var answer = []; for(var i = 1; i
[프로그래머스 Javascript] Level1 문자열 내 p와 y의 개수 - 대소문자로 되어있는 문자열 s가 주어집니다. - 대소문자를 구분하지 않고, p와 y의 개수가 같은지 체크합니다. - 문자열은 알파벳으로만 이루어져 있습니다. [방법 1] for문 사용 한 글자씩 대조한 후 선택된 글자들의 개수를 구하는 방법 function solution(s){ var answer = true; var p = 0; var y = 0; for(var i = 0; i < s.length; i++) { if(s[i] == 'p' || s[i] == 'P') { p++; } else if(s[i] == 'y' || s[i] == 'Y') { y++; } } if(y != p || y == 0 ) {answer = false;} return answer; } [방법 2] match 사용 ma..
[프로그래머스 Javascript] Level1 나누어 떨어지는 숫자 배열 - 배열 arr와 자연수 divisor이 주어집니다. -arr 길이는 1 이상입니다. - 나누어 떨어지는 값들을 오름차순으로 정렬해 반환합니다. - 나누어 떨어지는 수가 하나도 없다면 배열에 -1을 반환합니다. filter로 나누어 떨어지는 숫자들만 찾아낸 후, sort로 오름차순으로 정리해 줍니다. function solution(arr, divisor) { var answer = []; const div = arr.filter( el => el % divisor == 0 ); answer = div.length > 0 ? div.sort( (a, b )=> a - b ) : [-1]; return answer; } Array.filter() : 조건에 대하여 참인 요소들만 새로운 배열로 반환하는 메서..
[프로그래머스 Javascript] Level1 핸드폰 번호 가리기 - phone_number가 문자열로 주어집니다. - 문자열을 길이는 4 ~ 20글자입니다. - 뒷자리 4개를 제외한 나머지 번호를 *로 표시합니다. [방법 1] replace 사용 뒤에 4개를 글자를 가진 글자들을 *로 변경한 문자열을 반환해줍니다. function solution(phone_number) { let answer = ''; const length = phone_number.length; answer = phone_number.replace(/\w(?=\w{4})/g, '*'); // /\w(?=\w{4})/g : text 4개가 뒤에 존재하는 text 모두 return answer; } [방법 2] repeat 사용 *를 phone_number의 길이에서 4를 뺀 만큼 반복하고, 뒤에 ..
[프로그래머스 Javascript] Level1 두 정수 사이의 합 - 두 정수 a, b가 주어집니다. - a, b 사이에 존재하는 모든 정수를 더합니다. (a, b포함) 작은 수에서 큰 수까지 1씩 더하면서 사이에 숫자를 찾고, 그렇게 찾은 숫자들을 모두 더해줍니다. function solution(a, b) { var answer = 0; const max = Math.max(a, b); const min = Math.min(a, b); for(var i = min; i
[프로그래머스 Javascript] Level1 2016년 - 숫자 a, b가 주어집니다. - 2016년 a월 b일의 요일을 반환합니다. [방법 1] array 사용 getDay()로 얻은 숫자로 week이라는 배열에서 요일 문자열을 반환할 수 있도록 합니다. function solution(a, b) { let answer = ''; const week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'] const date = new Date(2016, a-1, b); answer = week[date.getDay()]; return answer; } [방법 2] toDateString 사용 toDateString을 통해 위와 같은 형태로 출력이 되면 그중 필요한 요일 부분만 반환할 수 있도록 합니다. function ..