'지뢰게임'에 해당되는 글 1건

  1. 2009.06.16 싸부 ~ 받아유~~ ㅋㅋ
제2 외국어 영역2009.06.16 16:46
public class MineGame {

    String mineStr = "";
    int nCoordinates;
    int mCoordinates;

    public Boolean isMine(int[] coordinates) {
        return mineStr.charAt(coordinatesToIndex(coordinates)) == '*' ? true :false;
    }

    public int[] indexToCoordinates(int idx) {

        return new int[]{(idx%mCoordinates),(idx/mCoordinates)};
    }

    public Integer coordinatesToIndex(int[] coordinates) {

        return coordinates[0] + (coordinates[1]*mCoordinates);
    }

    private Boolean isPlus(int value){
        return value > -1 ? true:false;
    }

    public String roundMineCnt(int[] coordinates) {
        if(isMine(coordinates)){
            return "*";
        }
        int m = coordinates[0];
        int mLeft = validity(m,-1);
        int mRigth = validity(m,mCoordinates);

        int n = coordinates[1];
        int nTop = validity(n,-1);
        int nButtom = validity(n,nCoordinates);

        return String.valueOf(countMine(new int[]{mLeft,m,mRigth},new int[]{nTop,n,nButtom}));
    }

    private int validity(int z,int maxValue) {
        if(maxValue < 0 && (z -1) > -1){
            return  z - 1;
        }else if(maxValue > 0 && (z + 1) < maxValue){
            return  z + 1;
        }
        return -1;
    }

    private int countMine(int[] m, int[] n){
        int mineCnt = 0;
        for(int j = 0 ; j < n.length;j++){
            if(isPlus(n[j])){
                for(int i = 0; i < m.length;i++){
                    if(isPlus(m[i])){
                        if(isMine(new int[]{m[i],n[j]})){
                            mineCnt++;
                        }
                    }
                }
            }
        }

        return mineCnt;
    }

    public void printMineMap(){
        int i = 0;
        do{
            System.out.print(roundMineCnt(indexToCoordinates(i)));
            i++;
            if((i%mCoordinates) == 0 && i != 0){
                System.out.println();
            }
        }while(i < (nCoordinates * mCoordinates));
        System.out.println();
    }

    public static void main(String[] args){
        String in = "5 3 *.. *.. ... .*. ...";
        String[] input = in.split("\\s",3);
        MineGame mg = new MineGame();
        mg.nCoordinates = new Integer(input[0]);
        mg.mCoordinates = new Integer(input[1]);

        mg.mineStr = input[2].replaceAll("[\\s]", "");
        mg.printMineMap();
    }
}

푸핫;;;

40506000 X 40506000 이정도 메트릭트도 견뎌 낼 수 있을지는 글쎄요 ..ㅋㅋ

허접하긴 하지만;;ㅋㅋ
Posted by is윤군