간단한 자바스크립트 코딩 테스트(4)
1. 두 정수 사이의 합
문제 : 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져있지 않습니다.
입출력 예
a b return
3 5 12
3 3 3
5 3 12
결과
function solution(a, b) {
var answer = 0;
/* 일반적인 방법(내가 푼 방법)
for(i=Math.min(a,b); i<=Math.max(a,b); i++) {
answer += i;
}
*/
// 가우스의 공식 이용(등차수열의 합) => 프로그래머스 참고
answer = (a+b) * (Math.max(a,b)-Math.min(a,b)+1) / 2
return answer;
}
console.log(solution(3,5)); // 12
console.log(solution(3,3)); // 3
console.log(solution(5,3)); // 12
2. 문자열 내림차순으로 배치하기
문제 : 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
str은 길이 1 이상인 문자열입니다.
입출력 예
s return
"Zbcdefg" "gfedcbZ"
결과
function solution(s) {
var answer = '';
let sorts = s.split(''); // 문자열 분리해서 배열로 변환
// 오름차순으로 정렬(sort) 하고 배열 합쳐서 다시 문자열로
answer = sorts.sort((a,b) => { return a < b ? 1 : -1 }).join('');
return answer;
}
console.log(solution('Zbcdefg')); // "gfedcbZ"
3. 직사각형 별찍기
문제 : 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
(이 문제는 반드시 표준 입력이 가능한 node.js 로 실행해야 함)
예시
입력
5 3
출력
*****
*****
*****
결과
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const str = data.split(" "); // 입력받은 문자를 공백으로 나눔
const y = Number(str[0]); // 5
const x = Number(str[1]); // 3
let answer = '';
for(i=0; i<y; i++) {
answer = answer + '*'.repeat(x) + '\n';
}
console.log(answer);
});
결과
*****
*****
*****
4. 제일 작은 수 제거하기
문제 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arr return
[4,3,2,1] [4,3,2]
[10] [-1]
결과
function solution(arr) {
var answer = [];
let index = arr.indexOf(Math.min(...arr))
arr.splice(index,1);
answer = arr.length > 0 ? arr : [-1];
return answer;
}
console.log(solution([4,3,2,1])); // [4,3,2];
console.log(solution([10])); // [-1]
* 최초에는 sort와 reverse로 배열을 역순으로 정리한후 마지막 값을 제거하는것으로 하고
코드를 실행했으나 제출시 정확성 체크에서 틀리게 나왔습니다.
그래서 문제의 의도인 배열의 인덱스를 이용해서 작성후 정확성 체크에 성공했습니다.
5. 문자열 다루기 기본
문제 : 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s return
"a234" false
"1234" true
결과
function solution(s) {
var answer = true;
answer = (s.length == 4 || s.length == 6) && /^\d+$/g.test(s) ? true : false;
return answer;
}
console.log(solution('a234')); // false
console.log(solution('1234')); // true
console.log(solution('12345')); // false
console.log(solution('2e34')); // false
* 숫자 여부에 대한 체크를 최초에는 isNaN을 통해 하였으나 입력받은 데이타 타입이 string이므로
문자로된 숫자속에 진짜 문자가 들어간 경우에도 숫자로 인식(지수)하는 문제가 있어 정규식을 이용하여 체크
하도록 하였습니다.
* 다른 방법(정규식을 이용한 방법 - 프로그래머스 참고)
return /^\d{6}$|^\d{4}$/.test(s);
'개발 > javascript' 카테고리의 다른 글
javascript 빈 값 체크~ NOT(!) 사용으로 끝내기 (0) | 2022.12.07 |
---|---|
자바스크립트 코딩 테스트 몇가지(5) - 응용 (0) | 2022.05.25 |
간단한 자바스크립트 코딩 테스트 몇가지(3) (0) | 2022.04.27 |
간단한 자바스크립트 코딩 테스트 몇가지(2) (0) | 2022.04.26 |
간단한 자바스크립트 코딩 테스트 몇가지(1) (0) | 2022.04.26 |