2022년 03월 20일 일요일 - 오늘 칩 많이 잃어따.... 흐규
오늘 올려볼 문제는 1007번 Minimum Domino Rotations For Equal Row 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
뭔가 안될거 같았는데 돼서 빨리 풀음 ㅋㅋㅋㅋ
입력
사진에서도 볼 수 있듯이 int 배열 2개가 입력으로 들어온다.
풀이 및 코드
각각 tops와 bottoms는 1 ~ 6 사이의 숫자 하나를 가지고 있는데 tops와 bottoms을 교환해서 모두 같은 숫자로만 이루어진 배열을 만들 수 있다면 최소한의 교환 개수를 리턴하는 문제이다. 교환이 불가능하다면 -1을 리턴한다.
오늘은 처음부터 정답을 생각해냈다.
일단 숫자의 빈도를 가지고 있는 배열을 선언하고 숫자의 개수를 저장한다.
숫자의 개수가 배열의 길이보다 긴지 판단하고 for문을 돌면서 적은 교환 개수를 구하는 식으로 구현했다.
이제 코드를 봐보자!
풀이코드
class Solution {
public int minDominoRotations(int[] tops, int[] bottoms) {
int[] t = new int[7];
int[] b = new int[7];
for(int i = 0; i < tops.length; i++)
{
t[tops[i]]++;
b[bottoms[i]]++;
}
int result = 20005;
Loop:
for(int i = 1; i < t.length; i++)
{
if(t[i] + b[i] >= tops.length)
{
int tnum = 0, bnum = 0;
for(int j = 0; j < tops.length; j++)
{
if(tops[j] == i && bottoms[j] == i) continue;
else if(tops[j] == i && bottoms[j] != i) tnum++;
else if(tops[j] != i && bottoms[j] == i) bnum++;
else continue Loop;
}
result = Math.min(result, Math.min(tnum, bnum));
}
}
if(result == 20005)
result = -1;
return result;
}
}
제출 화면
오늘 문제도 더 좋게 풀 수 있었는데 조금 나쁘게 푼 것 같아서 아쉽다.
내일 문제는 비상하게 풀 수 있었으면 좋겠다.
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
| [LeetCode] 1663번 문제를 풀어보았다. (ft. java) (0) | 2022.03.22 |
|---|---|
| [LeetCode] 763번 문제를 풀어보았다. (ft. java) (1) | 2022.03.21 |
| [LeetCode] 856번 문제를 풀어보았다. (ft. java) (0) | 2022.03.17 |
| [LeetCode] 946번 문제를 풀어보았다. (ft. java) (0) | 2022.03.16 |
| [LeetCode] 1249번 문제를 풀어보았다. (ft. java) (0) | 2022.03.15 |