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 이런걸 쓸거 같은데.. 제 머리로는 생각이 안나네요^^
;;;믿기지 않지만 루션이와 저와 생각이 일치하네요
대박쓰^^...
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도가 넘으면 반대로 돌려줬읍니다..