Level 1) 가운데 글자 가져오기, 수박수박수박수?, 내적, 문자열 내림차순으로 배치하기

Doozuu·2023년 2월 7일
0

프로그래머스 (JS)

목록 보기
42/183

📌 문제 1. 가운데 글자 가져오기

문제 설명

단어 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);
}



📌 문제 2. 수박수박수박수박수박수?

문제 설명

길이가 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;
} 

다음은 규칙을 찾아서 이를 이용해 풀어보았다.

  • 홀수면 "수박"을 (n-1)/2 번 반복한 것에 "수"를 붙인 것과 같다.
  • 짝수면 "수박"을 n/2 번 반복한 것과 같다.
function solution(n) {
   return n % 2 ? "수박".repeat((n-1)/2) + "수" : "수박".repeat(n/2);
}




📌 문제 3. 내적

문제 설명

길이가 같은 두 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;
}

reduce를 이용한 풀이 (단순 반복문 보다는 더 걸리고 재귀보다는 덜 걸림)

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}




📌 문제 4. 문자열 내림차순으로 배치하기

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항

str은 길이 1 이상인 문자열입니다.

입출력 예

s			return
"Zbcdefg"	"gfedcbZ"

풀이

sort( )는 배열에 있는 문자들을 오름차순으로 정렬해주는 메서드이다.
내림차순으로 정렬하려면 오름차순으로 정렬한뒤 뒤집어 주면 되므로, sort()하고 reverse()를 해주면 된다.

function solution(s) {
    return s.split('').sort().reverse().join('');
}
profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글