-
문제
https://www.acmicpc.net/problem/6987
6987번: 월드컵
월드컵 조별 최종 예선에서는 6개국으로 구성된 각 조별로 동일한 조에 소속된 국가들과 한 번씩, 각 국가별로 총 5번의 경기를 치른다. 조별리그가 끝난 후, 기자가 보내온 각 나라의 승, 무승부
www.acmicpc.net
문제를 이해했는가?
대진표의 결과를 주었을 때, 다음과 같은 결과를 만들 수 있는지 여부를 판단하는 프로그램을 만들어라.
문제 이해를 디테일하게
예시에 주어진 아래의 결과를 바탕으로 이야기 해보자.
5 0 0
3 0 2
2 0 3
0 0 5
4 0 1
1 0 4
위의 결과지는 "참"인 1을 출력 할 수 있는데, 그 이유는 아래의 두 가지이다.
1) 패배의 수와, 승리의 수가 같다
2) 무승부 수가 같다.
어떻게 풀 수 있나요?
1) 패배의 수와, 승리의 수가 같다
위의 조건을 해결 하기 위해서는, 위와 같이 "승리의 수"를 기준으로 내림차순 정렬이 이루어져야 한다.
이 후, 각 팀에서 얻을 수 있는 승리의 수만큼 다른 팀의 패배 수를 증가 시켜 준다.
그러면 아래와 같이 만들어 줄 수 있다.
[ [ 5, 0, 0 ], [ 0, 0, 1 ], [ 0, 0, 1 ], [ 0, 0, 1 ], [ 0, 0, 1 ], [ 0, 0, 1 ] ] [ [ 5, 0, 0 ], [ 4, 0, 1 ], [ 0, 0, 2 ], [ 0, 0, 2 ], [ 0, 0, 2 ], [ 0, 0, 2 ] ] [ [ 5, 0, 0 ], [ 4, 0, 1 ], [ 3, 0, 2 ], [ 0, 0, 3 ], [ 0, 0, 3 ], [ 0, 0, 3 ] ] [ [ 5, 0, 0 ], [ 4, 0, 1 ], [ 3, 0, 2 ], [ 2, 0, 3 ], [ 0, 0, 4 ], [ 0, 0, 4 ] ] [ [ 5, 0, 0 ], [ 4, 0, 1 ], [ 3, 0, 2 ], [ 2, 0, 3 ], [ 1, 0, 4 ], [ 0, 0, 5 ] ] [ [ 5, 0, 0 ], [ 4, 0, 1 ], [ 3, 0, 2 ], [ 2, 0, 3 ], [ 1, 0, 4 ], [ 0, 0, 5 ] ]
2) 무승부 수가 같다.
무승부는 무승부를 낸 2팀을 제외하고, 다른 팀의 스코어에 영향을 주지 않기 때문에 초기화 된 인덱스에 삽입 해주면 된다.
const board = Array.from(Array(6), () => Array(3).fill(0)); for (let i = 0; i < result.length; i++) { const [win, draw, defeat] = result[i]; board[i][0] = win; board[i][1] = draw; }
전체코드
function solution() { let len = result.length - 1; // 승리의 수를 기준으로 내림차순 result.sort((a, b) => { return b[0] - a[0]; }); // [0,0,0] 배열을 팀의 수만큼 만들어줌 = 초기화 const board = Array.from(Array(6), () => Array(3).fill(0)); for (let i = 0; i < result.length; i++) { // 구조분해할당 const [win, draw, defeat] = result[i]; // 승리와 무승부는 그 자리에 넣어주고 board[i][0] = win; board[i][1] = draw; // 패배의 수는 승리의 값만큼 다른 팀에 적용 시켜준다. for (let j = len; j >= len - win + 1; j--) { board[j][2] += 1; } console.log(board); } // 같으면 1, 다르면 0 출력 for (let i = 0; i < result.length; i++) { if (board[i].join("") !== result[i].join("")) return 0; } return 1; } const result = [ [4, 1, 0], [3, 0, 2], [4, 1, 0], [1, 1, 3], [0, 0, 5], [1, 1, 3], ]; console.log(solution());
'PS > 백준' 카테고리의 다른 글
[ 백준 -17609 ] 회문 ( 구현, 투포인터 - 자바스크립트 ) (3) 2021.06.29 [ 백준 - 19941 ] 햄버거 분배 ( 그리디 - 자바스크립트 ) (0) 2021.06.29 [백준_1268] 임시 반장 정하기 ( 구현 - 자바스크립트 ) (0) 2021.06.28 [ 백준 _ 15271 ] 번데기 by using JavaScript (0) 2021.06.27 [ 백준_2644 ] 촌수계산 ( bfs - 자바스크립트 ) (0) 2021.06.27 댓글