TIL Java
내일배움캠프 36일차 TIL _ 8주 2일차
mad038
2024. 6. 4. 22:25
- 오늘 있었던 일
- 팀과제
- 알고리즘
팀과제
알고리즘 문제 풀기
● 카펫
더보기
● 카펫 //링크
class Solution {
public int[] solution(int brown, int yellow) {
int min = 0;
brown = (brown -4)/2;
int[] answer = {brown,min};
for (int x = 0; x < brown; x++) {
if(x*(brown - x) == yellow) {
answer[0] = brown- x +2;
answer[1] = x+2;
break;
}
}
return answer;
}
}
- 꼭지점을 빼면 결국 최소 높이와 나머지를 구하면 된다..
- 기본값의 최소 높이 값을 구하고 길이를 구했다.
- 밑은 다른 사람의 풀이
-
import java.util.*; class Solution { public int[] solution(int brown, int red) { int a = (brown+4)/2; int b = red+2*a-4; int[] answer = {(int)(a+Math.sqrt(a*a-4*b))/2,(int)(a-Math.sqrt(a*a-4*b))/2}; return answer; } }
- 제작자 코멘트
- a는 완성된 카펫의 가로+세로입니다. b는 왜 저런식으로 써 놓으셨는진 모르겠지만 그냥 주어진 타일의 개수를 모두 합친 값입니다. 궁극적으로 answer 안에서 값을 구하는 방법을 기하학 적으로 보자면 우선 카펫의 가로 + 세로, 즉 a를 한변으로 하는 정사각형을 만든 후, 카펫모양으로 정사각형의 네 귀퉁이를 잘라내면, 즉 - 4 * b를 하면 가운데에 정사각형 형태의 타일이 남습니다. 루트를 이용하여 그 정사각형의 한 변의 길이를 구해주는데 그 한 변의 길이가 완성된 카펫의 가로와 세로의 길이 차이가 됩니다. 그러므로 더 긴쪽, 즉 가로를 구하기 위해선 가로와 새로를 더한 값에 차이를 더해주고 2로 나누고, 짧은 쪽을 구하기 위해선 빼고 2로 나눠주면 됩니다. 그림으로 그려보면 이해가 더 쉬운것 같네요.
당일 회고
- 깃허브가 안돼서 같은 작업을 16번 반복하니 됐다.. 어째서?깃허브 나제 우고칸!