[プログラマー]無傷の矩形
1597 ワード
MINDOLです
こんにちは!
皆さんお元気ですか?私はコロナ市局で家と団地のカフェだけを往復しています.
カフェで一度コーヒーを洗うときもマスクをします
では、アイスアメリカンコーヒーを1口飲む気持ちで解きましょう.
正方形
質問リンク
この問題は、例からすばやく理解できます.
初めて問題を読んだとき、どうやって近づくか悩んだ.
これは、長方形のパターンと数が横方向と縦方向の長さによって異なるためです.
皆さんは初めて問題を見てどのように接近しましたか?
対角線なので、縦の出発時間と到着時間は同じなので、速度の概念で近づきたいです.
横方向の長さw、縦方向の長さhの場合、横方向の移動速度は1である.
垂直移動速度はh/wである.
整理する
(ここから横1マスで削除する矩形数がわかる)
消去する矩形の個数を数えてください.
本当に文字で整理すると特にないような気がしますが、この方法は大変だと思います.
また,実数の演算量が大きくなると誤差が生じる可能性がある.
だから私は整数変数だけを使って値を求めているので、問題を解く時間が長くなったようです.
ではjavaコードを見てみましょう.
class Solution {
public long solution(long w, long h) { // int형은 w*h의 값이 범위를 벗어나서 바꿔줌
long cnt = 0;
for (int i=0; i<w; i++) // 가로 길이만큼 반복
cnt += ((h * (i + 1) + w - 1) / w) - (h * i / w); // 지워지는 사각형
return ((w * h) - cnt); // 전체 사각형 개수에서 뺸다
}
移動前の縦方向の長さが下がる整数式h * i / w
移動後に垂直に長くなる整数式(h * (i + 1) + w - 1) / w
実数演算に誤差がある可能性があるため,この方法を採用した.整数の除算を利用すると残りは捨てられます
悩む時間に比べてコードが短い.
今日のポスターはここまでにしましょうでは.
20000
Reference
この問題について([プログラマー]無傷の矩形), 我々は、より多くの情報をここで見つけました
https://velog.io/@minskim2/프로그래머스-멀쩡한-사각형
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([プログラマー]無傷の矩形), 我々は、より多くの情報をここで見つけました https://velog.io/@minskim2/프로그래머스-멀쩡한-사각형テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol