ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C#/프로그래머스] 귤 고르기
    코테풀이 2026. 4. 10. 15:23

     

     

    다시한번 정리하자면 k개의 귤을 팔아야할 때 크기가 되도록 같은 애들을 보내는 문제로 

    즉, 보낼수 있는 종류의 최소값을 반환하는 문제임

    (난 처음에 너무 급하게 읽고 크기 편차가 비슷한 것 끼리 보내는 줄알았다 ex) 1크기 다음엔2,,2크기다음엔 3.,)

     

     

    using System;
    using System.Collections.Generic;
    
    public class Solution {
    
    public int solution(int k, int[] tan) {
    
    int answer = 0;
    
    Dictionary<int,int> sizeCount = new Dictionary<int,int>();//크기 종류와 개수를 저장
    
    int arrLength= tan.Length;
    
    for(int i=0; i<arrLength; i++)//딕셔너리에 사이즈와 개수 저장
    {
       if(sizeCount. ContainsKey(tan[i]))
      {
         sizeCount[tan[i]]++;
      }
    else 
      {
        sizeCount.Add(tan[i],1);
      }
    
    }
    
    int[] total= new int[sizeCount. Count];
    int j=0;
    
    foreach (int value in sizeCount.Values)//배열에 개수를 정렬하기 위함
    {
        total[j]=value;
            j++;
        //Console.WriteLine(value); 
    }
    Array.Sort(total);//정렬
    
    for(int i=j-1;i>=0;i--)//개수가 많은 순서대로 판매
    {
        //Console.WriteLine(total[i]);
        k-=total[i];
        answer++;
        if(k>0) continue;
        else break;
        
    }
          
            return answer;
    
    }
    }

    출근하면서 폰으로 풀었어서 괄호 정렬이 좀 이상하다.

     

    1. Dictionary에 크기종류(int), 개수(int)로 분리함

    2. C#함수인 Array.Sort()를 사용하기 위해 새로운 배열을 하나 생성하고 Dictionary의 모든 값을 배열에 넣음

    3. Sort를 사용하여 배열 정렬 

    실수 모음

    원래는 Array.Reverse()를 사용하려 했지만 이상하게 Reverse를 사용해도 계속 오름차순 정렬되는 문제가 생겼다.

    글 작성할때 다시 찾아보니깐 Reverse가 내림차순 배열해주는게 아니라 그냥 배열의 앞뒤 순서를 바꿔주는 함수였음!!!!

    만약 쓸거면 Sort로 정렬 해주고 Reverse를 사용하자

    4.팔아야 하는 k에서 배열요소를 하나씩 빼주면서 answer을 증가시키고 k가 -되거나 0일시 반복문을 탈출하고 종류를 리턴

     

    끝~

    시간초과 당할까봐 두근두근 했는데 시간초과에는 자비로운 문제였던걸로

    '코테풀이' 카테고리의 다른 글

    [C#/프로그래머스] 하노이의 탑  (0) 2026.04.15
    [C#/프로그래머스] 올바른 괄호  (0) 2026.04.11
    [C#/프로그래머스]숫자 게임  (0) 2026.04.10
    [C#/백준] 소수찾기 1978번  (0) 2026.04.08
Designed by Tistory.