단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
s는 길이가 1 이상, 100이하인 스트링입니다.
s return
"abcde" "c"
"qwer" "we"
삼항연산자의 성질을 이용해 문자열 길이에 따라 반환값을 달리 설정해주었다.
function solution(s) {
return s.length % 2 ? s[parseInt(s.length/2)] : s[s.length/2-1] + s[s.length/2];
}
substring 메서드를 이용해 특정 index로 부터 몇 개를 빼올지 정할 수 있다.
function solution(s) {
return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
n은 길이 10,000이하인 자연수입니다.
n return
3 "수박수"
4 "수박수박"
처음은 반복문을 이용해 정석대로 풀어보았다.
function solution(n) {
var answer = '';
for(let i=1;i<=n;i++){
if(i%2 === 1){
answer+="수"
}else{
answer+="박"
}
}
return answer;
}
다음은 규칙을 찾아서 이를 이용해 풀어보았다.
function solution(n) {
return n % 2 ? "수박".repeat((n-1)/2) + "수" : "수박".repeat(n/2);
}
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
a b result
[1,2,3,4] [-3,-1,0,2] 3
[-1,0,1] [1,0,-1] -2
재귀를 이용해 풀어주었다. (굳이 재귀를 쓸 필요는 없지만 연습용으로!)
시간이 오래 걸리기 때문에 단순 반복문을 사용하는게 효율적이다.
function solution(a, b) {
if(a.length === 0) return 0;
return a[0] * b[0] + solution(a.slice(1), b.slice(1));
}
function solution(a, b) {
var sum = 0;
for(var i=0; i<a.length; i++){
sum += a[i]*b[i];
}
return sum;
}
function solution(a, b) {
return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
str은 길이 1 이상인 문자열입니다.
s return
"Zbcdefg" "gfedcbZ"
sort( )는 배열에 있는 문자들을 오름차순으로 정렬해주는 메서드이다.
내림차순으로 정렬하려면 오름차순으로 정렬한뒤 뒤집어 주면 되므로, sort()하고 reverse()를 해주면 된다.
function solution(s) {
return s.split('').sort().reverse().join('');
}