코드잇 팀나누기 실습 코드입니다.
문제는 아래와 같습니다.
오늘은 풋살 동아리 경기가 있는 날입니다. 총인원 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];
}
}
console.log(teams[0]);
console.log(teams[1]);
솔직히 이런생각은 못한것 같다. 풀이를 하자면
0,0 / 1,0 / 2,0 / 3,0 / 4,0 = 영준 태순 재훈 윤형 규식은 승자이다.
0,1 / 1,1 / 2,1 / 3,1 / 4,1 = 캡틴 우재 지웅 동욱 소원은 패자이다.
teams라는 배열에 이긴 사람은 이긴사람끼리 teams[0] 자리에 담고
진 사람은 teams[1]에 담으면 된다.
for문에서 모든게 결정이 나는 코드이다.
for(let i = 0; i < groups.length; i++)
첫번째 반복문부터 해석해보자 .
변수 i를 선언하고 groups.length 만큼 반복하고 1씩 증가한다.
groups.length는 전체 배열의 길이를 나타냄으로 5가 출력이 될 것이다. 즉 5번 반복한다.
for(let j = 0; j < groups[i].length; j++)
두번째 반복문 해석이다.
변수 j를 선언하고 groups[i] 번쨰의 길이만큼 반복하고 1씩 증가한다.
groups[i] 번쨰의 길이는 ? 2이다. 그리고 2로 계속 고정일 것이다. 두번쨰 반복문은 2번만 반복하고 종료된다.
teams[j][i] = groups[i][j];
솔직히 손코딩을 해보면 더 쉽겠지만, 표로 표현해 보자.
| i | j |
| 0 | 0 |
| 1 | |
| 1 | 0 |
| 1 | |
| 2 | 0 |
| 1 | |
| 3 | 0 |
| 1 | |
| 4 | 0 |
| 1 |
이런 형식으로 반복이 된다. 그럼 마지막
teams[j][i] = groups[i][j]; 여기에 대입해보면 정답이 쉽게 나온다.
솔직히 생각하지 못했다. 내가 개인적으로 푼 방법은 reverse() 함수를 사용해서 고정값으로 넣었다.
풀어놓고 정말 이마를 탁 치고 아 내가 생각이 짧고 아직 실력이 부족하구나 라는 것을 매일 느끼지만 다시한번 느꼈다.
열공하자 ..
'JavaScript' 카테고리의 다른 글
| 최소지폐로 거스름돈 계산하기 (0) | 2020.08.29 |
|---|---|
| 팰린드롬 확인하기 (0) | 2020.08.29 |
| 자바스크립트 배열 가지고 놀기 (0) | 2020.08.27 |
| 자바스크립트 기본 배열의 정의 (0) | 2020.08.27 |
| 자바스크립트 Date 가지고 놀기 (0) | 2020.08.27 |