2개의 코드 문제, 2개의 면접대비 문제
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한 조건
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.
입출력 예
arr divisor return
[5, 9, 7, 10] 5 [5, 10][2, 36, 1, 3] 1 [1, 2, 3, 36][3,2,6] 10 [-1]
입출력 예 설명
입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.
입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.
입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.
code
function solution(arr, divisor) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % divisor === 0) {
result.push(arr[i]);
}
}
result.sort(function (a, b) {
return a - b;
});
if (result.length === 0) {
result.push(-1);
}
return result;
}
description
divisor로 나누어떨어지는 값을 구해야하므로 arr의 element를 돌아가면서 divisor로 나누어 나머지값이 0일때 result에 넣게 만들었다. 그 후 sort를 이용해 오름차순으로 정렬해주었고, 만약 나누어떨어지는 값이 하나도 없다면 길이는 0이므로 result.length 가 0 일때 -1을 넣어주었다.
문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다..
제한 조건
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.
입출력 예
s answer
"pPoooyY" true
"Pyy" false
입출력 예 설명
입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.
code
function solution(s) {
if (s.toLowerCase().split('p').length === s.toLowerCase().split('y').length) {
return true;
} else {
return false;
}
}
description
s를 lowercase로 소문자로 맞춘다음에 p의 개수와 y의 개수를 비교해야하므로, p의 길이와 y의 길이를 재서 같으면 true 아니면 false를 return 해주었다.
[Javascript Question]
Answer.
javascript는 browser, document 등을 다루기 때문에 client에 대한 개발을 하는 것으로 생각할 수 있습니다. JavaScript는 스크립트 언어로써, 특정한 프로그램 안에서만 동작을 할 수 있는데, 크롬, 파이어폭스, 사파리, 익스플로러 등 이런 웹 브라우저가 없으면 사용할 수 없는 단점이 있습니다. 그래서 client개발을 위한 용도로만 국한되어 있었는데요. Node/js는 터미널 프로그램(원도우 cmd, mac terminal 등)에서 node를 입력하여 브라우저 없이도 실행될 수 있게 만들었습니다. 즉, JavaScript를 크롬(Chrome)같은 브라우저에서만 쓰는 것이 아닌 브라우저 밖. 즉, 내 컴퓨터에서 다양한 용도로 확장하기 위해 만들어진 것이 바로 Node.js라고 볼 수 있습니다.node.js는 chrome의 Javascript엔진인 V8이 Desktop App으로 추출된 것으로, browser와 document는 다룰 수 없고, backend를 다룰 수 있는 도구입니다.
Answer.
익명함수는 말그대로 이름이 없는 함수입니다. 따라서 익명함수를 선언하고 사용하기 위해서는 변수에 넣어서 사용해야합니다. 선언적함수는 함수를 선언할 때 이름을 붙여주는 함수를 말합니다. 즉, 따로 변수에 넣어주지 않고 선언할 대 붙여준 이름으로 호출하면 됩니다. 이 둘의 차이는 선언적 함수는 웹브라우저가 가장 먼저 읽고, 익명함수는 그 뒤에 코드를 차례로 읽을 때 읽는다는 점입니다.