inblog logo
|
LHS's Study Space
    알고리즘문제풀기C#

    [알고리즘 문제 풀기] 사탕(11256)

    C#
    lhs's avatar
    lhs
    Feb 01, 2025
    [알고리즘 문제 풀기] 사탕(11256)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/11256
    notion image

    1. 문제 풀이 아이디어

    • 배열 정렬을 활용하여 문제를 해결할 수 있다.

    2. 나의 정답 코드

    StreamReader sr = new(Console.OpenStandardInput()); StreamWriter sw = new(Console.OpenStandardOutput()); int t = int.Parse(sr.ReadLine()); for (int i = 0; i < t; i++) { string[] split = sr.ReadLine().Split(); int j = int.Parse(split[0]); int n = int.Parse(split[1]); int[] arr = new int[n]; for (int k = 0; k < n; k++) { split = sr.ReadLine().Split(); arr[k] = int.Parse(split[0]) * int.Parse(split[1]); } Array.Sort(arr); int sum = 0; for (int k = 0; k < n; k++) { sum += arr[n - k - 1]; if (sum >= j) { sw.WriteLine(k + 1); break; } } } sr.Close(); sw.Close();

    3. 정리

    • 여러 테스트 케이스를 처리하기 위해 for (int i = 0; i < t; i++) 루프를 사용한다.
    • arr[k]에는 각 상자의 사탕 개수를 저장한다.
    • Array.Sort(arr)로 정렬한 후, 큰 값부터 선택하기 위해 n - k - 1 인덱스를 사용한다.
    • sum 변수를 이용하여 사탕 개수를 누적하며, sum >= j가 되면 반복을 종료하고 상자의 최소 개수를 출력한다.
    Share article

    LHS's Study Space

    RSS·Powered by Inblog