JavaScript_다차원배열 문제

cho·2023년 7월 17일

📖문제

총인원 10명이서 5명씩 팀을 나누려고 한다. 실력이 비슷한 사람들끼리 가위바위보를 했고, 이긴사람이 0번 index, 진 사람이 1번 index 배열을 만들어 정리했다. 다음 groups 배열을 가지고, 이긴 사람끼리 그리고 진 사람끼리 팀을 나눠 teams 배열을 완성해보자.

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

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]
  }
}

✏️설명

for(let i = 0; i < groups.length; i++){}
-> 이 for문은 groups의 길이만큼 (rows) 진행하는 각각의 팀에 대한 인덱싱이다.

for(let j = 0; j < groups[i].length; j++){}
-> 이 for문은 배열 안의 각 요소 배열의 길이를 (columns) 나타낸다.

ex)
groups
[(i, j), (i, j)]

['영준', '캡틴'] = [(0,0), (0,1)]

['태순', '우재'] = [(1,0), (1,1)]

['재훈', '지웅'] = [(2,0), (2,1)]

['윤형', '동욱'] = [(3,0), (3,1)]

['규식', '소원'] = [(4,0), (4,1)]

teams
[(j, i), (j, i), (j, i), (j, i), (j, i)]

['영준', '태순' , '재훈', '윤형', '규식']

[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)]

['캡틴', '우재', '지웅', '동욱', '소원']

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5)]

위와 같이 groups 2 X 5 배열에서 teams 5 X 2 배열로 바뀌려면 teams[j][i] = groups[i][j] 이렇게 i와 j의 순서를 바꾸어야한다.

0개의 댓글