Mock Interview: Apple

JJ·2021년 7월 15일
0

MockTest

목록 보기
51/60

1275. Find Winner on a Tic Tac Toe Game

class Solution {
    public String tictactoe(int[][] moves) {
        //horizontal, vertical, diagonal
        int[] ahor = new int[3];
        int[] aver = new int[3];
        int[] bhor = new int[3];
        int[] bver = new int[3];
        int[] adiag = new int[2];
        int[] bdiag = new int[2];
        
        for (int i = 0; i < moves.length; i++) {
            int v = moves[i][0];
            int h = moves[i][1];
            
            if (i % 2 == 0) {
                ahor[h]++;
                aver[v]++;
                if (h == v && h == 1) {
                    adiag[0]++;
                    adiag[1]++;
                } else if (h == v) {
                    adiag[0]++;
                } else if ((h + v) == 2) {
                    adiag[1]++;
                }
            } else {
                bhor[h]++;
                bver[v]++;
                if (h == v && h == 1) {
                    bdiag[0]++;
                    bdiag[1]++;
                } else if (h == v) {
                    bdiag[0]++;
                } else if ((h + v) == 2) {
                    bdiag[1]++;
                }
            }
            
            if (ahor[h] == 3 || aver[v] == 3 || adiag[0] == 3 || adiag[1] == 3) {
                return "A";
            }
            
            if (bhor[h] == 3 || bver[v] == 3 || bdiag[0] == 3 || bdiag[1] == 3) {
                return "B";
            }
        }
        
        if (moves.length == 9) {
            return "Draw";
        } else {
            return "Pending";
        }
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Find Winner on a Tic Tac Toe Game.
Memory Usage: 36.6 MB, less than 47.27% of Java online submissions for Find Winner on a Tic Tac Toe Game.

믿기지 않을만큼 더럽게 풀었지만...^^
가능한게 가로, 세로, 대각선만 된다는 점을 이용해서
가로줄, 세로줄, 대각선줄에 몇개가 찼는지 써놓는 array를 냅다 만들었읍니다
뭔가 BFS 이런걸 쓸거 같은데.. 제 머리로는 생각이 안나네요^^

;;;믿기지 않지만 루션이와 저와 생각이 일치하네요
대박쓰^^...

1344. Angle Between Hands of a Clock

class Solution {
    public double angleClock(int hour, int minutes) {
        //1시간: 30도
        //1분 가면 시침 0.5도 움직임
        //1분: 6도
        
        double deghour = (hour % 12.0) * 30.0;
        double degmin = (minutes * 6.0);
        deghour = deghour + (minutes / 2.0);
        
        double result = Math.abs(deghour - degmin);
        
        if (result > 180.0) {
            result = 360.0 - result;
        }
        
        return result; 
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Angle Between Hands of a Clock.
Memory Usage: 36.2 MB, less than 54.02% of Java online submissions for Angle Between Hands of a Clock.

그냥 이거도 뭐 설명할거 없이..
시침과 분침의 기본 값을 설정하고
1분에 시침이 몇도 움직이는지 계산해서 추가로 더해 준 다음에
차이를 구하고..
그 차이가 180도가 넘으면 반대로 돌려줬읍니다..

0개의 댓글