[Lv.0] 5명씩

지수·2025년 1월 2일

CodingTest

목록 보기
3/26
post-thumbnail

푼 문제 : 5명씩
https://school.programmers.co.kr/learn/courses/30/lessons/181886

문제 설명
최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때, 앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return하도록 solution 함수를 완성해주세요. 마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다.

제한사항

  • 5 ≤ names의 길이 ≤ 30
  • 1 ≤ names의 원소의 길이 ≤ 10
  • names의 원소는 영어 알파벳 소문자로만 이루어져 있습니다.

입출력 예

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

나의 풀이

for(var i=0; i<names.length; i+=5)
	answer.push(names[i]);
  • index를 사용하기 위해 기본적인 for문을 사용하였다. for in으로도 할 수 있는지 해봐야겠다.
  • 5명씩 탈 수 있는 놀이기구이기 때문에 i가 반복 될 때마다 5씩 증가 되도록 했다.
  • push() : 배열의 가장 마지막에 새로운 항목을 추가

TIL
예전에 풀지 못했던 문제를 다시 시도해보았다. 예전 풀이들을 보니 너무 어렵게 접근 했던 것 같다.

예전 풀이 1

var a = names.slice(0, 5);
    var b = names.slice(5, names.length);
    
    answer.push(a[0]);
    answer.push(b[0]);

예전 풀이 2

names.forEach((v, i)=>{
        if(i<names.length/5+1)
            var a = names.slice(i, i+5);
        answer.push(a[0]);
    });

이때는 forEach를 배운지 얼마 되지 않아 배열이 나오면 무조건 forEach로 풀려고 했었던 것 같다. 상황에 맞는 방법이 있음을 다시금 깨달았다.

profile
개발자 꿈나무 여고생

0개의 댓글