[プログラマー]カーペット
3924 ワード
チェックカーペットの場合、茶色の枠部分と黄色の内側部分があると仮定し、茶色部分と黄色部分の個数をそれぞれ与えると、カーペットの縦横寸法を配列に戻す必要がある.
ちょっと考えると簡単な問題です.
ブラウンはボーダーなので、半分に分けると横+縦-1の値が得られます.
幅4 x 6のカーペットであれば、茶色には(4-2)x 2+6 x 2の個数があります.
言い換えればこうだ
(ブラウン/2-i)x(i+2)=幅
幅=褐色+黄色
茶色+黄色=(茶色/2-i)x(i+2)
茶色と黄色の値は既に知られているので,上記の式の基準に従って適切なiを見つけるだけでよい.
文字で説明するのは難しいので、説明するよりコードを直接見たほうがいいです.
ちょっと考えると簡単な問題です.
ブラウンはボーダーなので、半分に分けると横+縦-1の値が得られます.
幅4 x 6のカーペットであれば、茶色には(4-2)x 2+6 x 2の個数があります.
言い換えればこうだ
(ブラウン/2-i)x(i+2)=幅
幅=褐色+黄色
茶色+黄色=(茶色/2-i)x(i+2)
茶色と黄色の値は既に知られているので,上記の式の基準に従って適切なiを見つけるだけでよい.
文字で説明するのは難しいので、説明するよりコードを直接見たほうがいいです.
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int half = brown/2;
int size = yellow+brown;
for(int i=1; i< half; i++) {
if(size==((i+2)*(half-i))) {
answer[0] = (half-i);
answer[1] = (i+2);
break;
}
}
return answer;
}
}
Reference
この問題について([プログラマー]カーペット), 我々は、より多くの情報をここで見つけました https://velog.io/@spark805/프로그래머스-카펫テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol