Front-End

프로그래머스 기초트레이닝 11일차 본문

알고리즘

프로그래머스 기초트레이닝 11일차

jeongsso 2023. 8. 26. 13:06

 

 

문제 58 .  5명씩


문제 설명

최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때, 

앞에서부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return 하도록 solution 함수를 완성해 주세요. 

마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다.

 

 

입출력 예

names result
["nami", "ahri", "jayce", "garen", "ivern", "vex", "jinx"] ["nami", "vex"]

 

 

입출력 예 설명

앞에서부터 5명씩 두 그룹으로 묶을 수 있습니다. ["nami", "ahri", "jayce", "garen", "ivern"], ["vex", "jinx"] 이 두 그룹에서 가장 앞에 서있는 사람들의 이름을 담은 리스트인 ["nami", "vex"]를 return 합니다.

 

 

저의 풀이!

function solution(names) {
    return names.filter((_, i) => i % 5 === 0);
}

console.log(
solution(['nami', 'ahri', 'jayce', 'garen', 'ivern', 'vex', 'jinx'])
);

 

 

메모

filter로 인덱스만 사용해서 i 가 5로 나머지가 0일 때 인 애만 출력했습니다.

깔끔!

 

 

 

 

문제 59 .  A강조하기


문제 설명

문자열 myString이 주어집니다.

myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고,

"A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.

 

 

입출력 예

my_string result
"abstract algebra" "AbstrAct AlgebrA"
"PrOgRaMmErS" "progrAmmers"

 

 

입출력 예 설명

0번, 5번, 9번, 15번 인덱스의 "a"는 소문자이므로 전부 대문자로 고쳐줍니다.
다른 문자들은 전부 "a"가 아닌 소문자이므로 바꾸지 않습니다.
따라서 "AbstrAct AlgebrA"를 return 합니다.

0번, 2번, 4번, 6번, 8번, 10번 인덱스의 문자들은 "A"가 아닌 대문자이므로 전부 소문자로 고쳐줍니다.
5번 인덱스의 "a"는 소문자이므로 대문자로 고쳐줍니다.
다른 문자들은 전부 "a"가 아닌 소문자이므로 바꾸지 않습니다.
따라서 "progrAmmers"를 return 합니다.

 

 

저의 풀이!

function solution(my_string) {
    let answer = '';

    for (let i = 0; i < my_string.length; i++) {
        if (my_string[i].match(/a/gi)) {
            answer += my_string[i].toUpperCase();
        } else {
            answer += my_string[i].toLowerCase();
        }
    }
    return answer;
}

console.log(solution('abstract algebra'));

 

 

메모

반복, 조건문을 이용해서 풀었다.

function solution1(my_string) {
let answer = '';

for (let i = 0; i < my_string.length; i++) {
my_string[i].match(/a/gi)
? (answer += my_string[i].toUpperCase())
: (answer += my_string[i].toLowerCase());
}
return answer;
}

console.log(solution1('abstract algebra'));

삼항조건문으로도 가능하다.

 

 

 

 

문제60.  접미사인지 확인하기


문제 설명

정수 리스트 num_list가 주어집니다. 

가장 첫 번째 원소를 1번 원소라고 할 때, 

홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해 주세요. 

두 값이 같을 경우 그 값을 return 합니다.

 

 

입출력 예

num_list result
[4, 2, 6, 1, 7, 6] 1
[-1, 2, 5, 6, 3] 8

 

 

입출력 예 설명

홀수 번째 원소들의 합은 4 + 6 + 7 = 17, 짝수 번째 원소들의 합은 2 + 1 + 6 = 9 이므로 17을 return 합니다.

홀수 번째 원소들의 합은 -1 + 5 + 3 = 7, 짝수 번째 원소들의 합은 2 + 6 = 8 이므로 8을 return 합니다.

 

 

저의 풀이!

function solution(num_list) {
    let 홀수합 = 0;
    let 짝수합 = 0;

    num_list.filter((num, i) => {
        return i % 2 === 1 ? (홀수합 += num) : (짝수합 += num);
    });

    return 홀수합 >= 짝수합 ? 홀수합 : 짝수합;
}

console.log(solution([4, 2, 6, 1, 7, 6]));

 

 

메모

변수, filter 이용해서 진행했습니다.

return 문에 있는 >=부등호는 큰 쪽은 큰 쪽을 내보내고 같을 경우 둘 중 하나 내보내도 되니까 

크거나 같을 때! 홀수~라고 하면 같은 말이기 때문이죠~

 

 

 

 

 

 

 

 

Comments