public static void main(String[] args) throws FileNotFoundException {
//Scanner sc = new Scanner(new File("input.txt"));
Scanner sc = new Scanner(System.in);
int cases = sc.nextInt();
/*
* 이 부분에 구현할 알고리즘을 작성할 것.
* 변수 선언,활용 등은 자유롭게 가능.
*/
for( int a=0; a<cases; a++ ) {
League myLeague = new League();
String MyTeam; // 응원하는팀
int remainGame;
Tree myTree = new Tree();
// 입력으로부터 8개팀 정보 입력받아서 리그 배열에 저장
for( int b=0; b<8; b++ ) {
String tn = sc.next();
int w = sc.nextInt();
int d = sc.nextInt();
int l = sc.nextInt();
TeamInfo tmp = new TeamInfo(tn,w,d,l);
myLeague.LeagueArr[b] = tmp;
}
MyTeam = sc.next(); // 응원하는 팀 저장
remainGame = sc.nextInt(); // 잔여경기 저장
// 잔여경기에 따른 모든 경우의수를 나타내는 3진포화트리 만들기
for( int b=0; b<remainGame; b++ ) {
String str1 = sc.next();
String str2 = sc.next();
myTree.insert(str1, str2, b);
}
myTree.Arr = myLeague;
boolean ck = myTree.gogosing(MyTeam);
if(ck)
System.out.println("YES");
else
System.out.println("NO");
}
sc.close();
}
}
class TeamInfo {
public String teamName;
public int winCount;
public int drawCount;
public int loseCount;
public double winRate;
Jubei
코드는 다 짰고 테스트 케이스도 정상적으로 동작하는데
메모리를 많이썼다고 SIGKILL 당했네요..
이거 메모리를 어떻게 줄여야할까요 ㅠ_ㅠ..
코드 간략하게 설명드리면, 각 팀의 승/무/패/승률 을 갖는 객체를 만들고, 그 객체 배열을 갖고 순위리턴, 잔여경기 결과반영 등의 동작을 수행하는 리그 객체가 있습니다.
그리고 잔여 경기들에 따라 가능한 모든 경우의 수를 3진 포화트리로 구성했습니다. 그렇게 해서 트리를 순회하면서 leaf node 일때 해당 경기결과를 리그에 반영시켜서 순위를 산출하게 했습니다...
ㅠㅠ..메모리 줄일 방법좀 도와주세요 ㅠ_ㅠ..아예 다시짜야하나요?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
}
class TeamInfo {
public String teamName;
public int winCount;
public int drawCount;
public int loseCount;
public double winRate;
}
class League {
public TeamInfo[] LeagueArr;
}
// 트리 노드 클래스
class Node {
public String name;
public Node parentNode;
public Node leftNode;
public Node centerNode;
public Node rightNode;
}
// 트리 클래스
class Tree {
public Node rootNode;
public boolean ck;
public League Arr;
public League ArrCopy;
}
9년 전