Machineboy空

B140:ネズミ駆除 OrderByDescending 본문

Computer/Coding Test

B140:ネズミ駆除 OrderByDescending

안녕도라 2025. 5. 13. 10:44

문제요약

2차원 배열에 N개의 덫을 설치하여 최대한 많은 쥐를 잡아라.

 

https://paiza.jp/works/challenges/686/retry

 

ログイン

ログイン画面です。|ITエンジニア・プログラマ向け総合求職・学習サイト【paiza】

paiza.jp

区画(くかく)
구획
分布(ぶんぷ) 분포

난이도

Rank B


풀이 포인트

  • T가 h*w 보다 클 수 있음에 대한 예외 처리
  • List 내림차순
List<int> list = new List<int>();

list.Sort();
list.Reverse();
using System.Linq;

var sorted = list.OrderByDescending(x => x).ToList();

REVIEW

 

문제자체는 쉬운데 칸의 수보다, 덫의 수가 많아질 수 있다는 것을 간과해,

인덱스 에러가 났었다. 그리고 List 정렬이 아직 자유자재로 되지 않는다.

 


CODE

using System;
using System.Linq;
using System.Collections.Generic;


class Program
{
    static void Main()
    {
        var line = Console.ReadLine().Split().Select(int.Parse).ToArray();
        int h = line[0];
        int w = line[1];
        
        int[,] grid = new int[h,w];
        
        var line2 = Console.ReadLine().Split().Select(int.Parse).ToArray();
        int n = line2[0];
        int t = line2[1];
        
        for(int i = 0; i < n; i++)
        {
            var row = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int a = row[0]-1;
            int b = row[1]-1;
            
            grid[a,b]++;
        }
        
        List<int> list = new List<int>();
        
        for(int i = 0; i < h; i++){
            for(int j = 0; j < w; j++){
                list.Add(grid[i,j]);
            }
        }
        
        list.Sort();
        list.Reverse();
        int sum = 0;
        t = Math.Min(t, list.Count);
        for(int i = 0; i < t; i++){
            sum += list[i];
        }
        
        
        Console.WriteLine(sum);
    }
}