6198号:屋根ガーデンを飾る


質問する



6198号:屋根ガーデンを飾る

に近づく

  • の順に近づき、ビルの高さと向き(右側)の条件を考慮します.
  • 現在のビルから右に見ると、低い高さのビルしか見えません.
  • より高い建物またはそれ以上の建物がある場合、
  • は以下の建物を隠す.
    これらの条件を考慮すると,Stackによるアクセスが容易になる.

    マイコード

    import java.io.*;
    import java.util.Stack;
    
    public class Main {
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        static Stack<Integer> stack = new Stack<>();
        static int temp;
        static long count;
        public static void main(String[] args) throws IOException {
            int N = Integer.parseInt(br.readLine());
            for (int i = 0; i < N; i++) {
                temp = Integer.parseInt(br.readLine());
                while (!stack.isEmpty() && stack.peek() <= temp) stack.pop();
                count += stack.size();
                stack.push(temp);
            }
            System.out.println(count);
        }
    }
  • スタックでビルの高さをpushにする前に、毎回前に挿入したビルの高さと比較します.
  • スタック内のビルの数により、最終的な結果が得られます.
  • PS初心者として、スタックがPSでどのように使われているのか、ずっと気になっていましたが、この問題を通じて、いくつかのまとめをしています.
    // 「Baking dog」ありがとう。ほほほ