1. 문제설명
2. 나의풀이
- 완전탐색 알고리즘 문제로 나온 프로그래머스 2단계 카펫 문제.
- 입출력 예시를 유심히 보고 brown과 yellow의 합의 약수 중 짝지어진 두 수의 곱이라는 것을 깨달음.
- answer의 0번방에는 가로의 길이 즉, 1번방인 세로보다 같거나 큰 수가 와야하기 때문에 빠르게 가로의 길이를 구해주기 위해 반복문을 뒤에서부터 탔음.
- 아래 코드에서 num은 i보다 같거나 작을 수 밖에 없음.
- num은 무조건 2보다 큼. yellow가 최소 1이기때문에 최소 가로 세로 길이는 3임.
- 가로, 세로를 구하고 2배를 더해주면 4개의 꼭짓점이 중복으로 더해짐. 그래서 -4해줌.
public int[] solution(int brown, int yellow)
{
int[] answer = new int[2];
int sum = brown + yellow;
for (int i = sum; i > 2; i--)
{
if (sum % i != 0)
continue;
int num = sum / i;
if(i >= num && num > 2)
{
int w = i;
int h = num;
if(brown == (w + h) * 2 - 4)
{
answer[0] = w;
answer[1] = h;
break;
}
}
}
return answer;
}
'C# > 프로그래머스 코딩 문제 풀이' 카테고리의 다른 글
[프로그래머스 C#] Lv.2 귤 고르기 (0) | 2024.05.24 |
---|---|
[프로그래머스 C#] Lv.2 멀리뛰기 (0) | 2024.05.23 |
[프로그래머스 C#] Lv.2 JadenCase 문자열 만들기 (0) | 2024.05.21 |
[프로그래머스 C#] Lv.2 최솟값 만들기 (0) | 2024.05.17 |
[프로그래머스 C#] Lv.2 최댓값과 최솟값 (0) | 2024.05.17 |