본문 바로가기

코딩테스트

[JavaScript] 배열을 활용하여 팀 나누기

자바스크립트 배열을 활용해서 팀 나누기

(2차원 배열)

 

2차원 배열이란, 배열의 요소로 1차원 배열을 가지는 배열이다.

 


🔍 문제

오늘은 풋살 동아리 경기가 있는 날입니다. 총인원 10명이서 5명씩 팀을 나누려고 하는데요.

실력이 비슷한 사람들끼리 가위바위보를 했고, 이긴사람이 0번 index, 진 사람이 1번 index 배열을 만들어 정리했습니다.

다음 groups 배열을 가지고, 이긴 사람끼리 그리고 진 사람끼리 팀을 나눠 teams 배열을 완성해 주세요.

let groups = [
  ['영준', '캡틴'], 
  ['태순', '우재'],
  ['재훈', '지웅'],
  ['윤형', '동욱'],
  ['규식', '소원'],
];

let teams = [
  [],
  [],
];

 


🔍 출력 예시

[ '영준', '태순', '재훈', '윤형', '규식' ]
[ '캡틴', '우재', '지웅', '동욱', '소원' ]

 


🔍 내가 푼 방법

만들어져 있는 teams 이중배열(2차원 배열)을

groups 이중배열을 담았다.

 

너무 생각을 안하고 단순하게 푼듯 .. ㅎㅎ ..

teams[0][0] = groups[0][0];
teams[1][0] = groups[0][1];
teams[0][1] = groups[1][0];
teams[1][1] = groups[1][1];
teams[0][2] = groups[2][0];
teams[1][2] = groups[2][1];
teams[0][3] = groups[3][0];
teams[1][3] = groups[3][1];
teams[0][4] = groups[4][0];
teams[1][4] = groups[4][1];

 


🔍 정답 해설

일단 하나하나 필요한 작업들을 모두 작성해보면,

결국 groups의 각 index를 뒤집어서 teams에 할당해주면 간단하게 배열을 나눠줄 수 있다 !

let groups = [
  ['영준', '캡틴'], 
  ['태순', '우재'],
  ['재훈', '지웅'],
  ['윤형', '동욱'],
  ['규식', '소원'],
];

let teams = [
  [],
  [],
];

for(let i = 0; i < groups.length; i++) {
  for(let j = 0; j < groups[i].length; j++) {
    console.log(groups[i][j]);
  }
}

 

2차원 배열을 다뤄야하니, 이렇게 반복문을 이렇게 겹치면 각 요소별 값들을 가져올 수 있다.

let teams = [
  [],
  [],
];

for(let i = 0; i < groups.length; i++) {
  for(let j = 0; j < groups[i].length; j++) {
    teams[j][i] = groups[i][j];
  }
}

console.log(teams[0]);
console.log(teams[1]);

 

최종적으로 groups의 각 index를 뒤집어서 teams에 할당해주면 좀 더 효율적으로 문제를 해결할 수 있다.

위에서 내가 처음에 풀었던 방식보다는 이렇게 활용해서 푸는것이 좀 더 효율적으로 좋은 코드로 만들 수 있다.

 

 

 

 

문제 출처) 코드잇 Code it - 자바스크립트 기초 강의