C# 카펫 [프로그래머스 Level 2]
코드 바로보기
문제 설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
코드
using System;
public class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
//yellow를 기준으로 가로, 세로 길이 변수 초기화
int width = 0;
int height = 0;
//yellow를 기준으로 반복
for(int i = 1; i<=yellow; i++)
{
//i를 높이로 가정했을 때 넓이는 yellow/i 이므로
//yellow%i 나머지가 0이면 각각 넓이와 높이 설정
if(yellow%i==0)
{
width = yellow/i;
height = i;
//카펫의 가로길이가 세로길이와 같거나 길면
if(height<=width)
{
//yellow의 가로, 세로 길이에 2를 더하면 brown의 가로세로 길이가 나오고
//brown의 가로 세로 길이를 곱하면 brown + yellow의 크기가 된다.
if((width+2) * (height+2) == brown + yellow)
{
answer = new int[] {width+2, height+2};
return answer;
}
}
}
}
return answer;
}
}
'개발공간' 카테고리의 다른 글
C# 단어 변환 [프로그래머스 Level 3] (1) | 2021.08.28 |
---|---|
C# H-Index [프로그래머스 Level 2] (0) | 2021.08.25 |
C# 영어 끝말잇기 [프로그래머스 Level 2] (0) | 2021.08.25 |
C# 게임 맵 최단거리 [프로그래머스 Level 2] (0) | 2021.08.18 |
C# 예상 대진표 [프로그래머스 Level 2] (0) | 2021.08.14 |
댓글