문제 요약

첫번째 인수로는 양초의 개수를 받고

나머지 인수는 그 양초의 높이를 각각 받는다.

콜린은 양초의 높이가 가장 큰 것들만 불을 끌 수 있다.

그녀가 성공적으로 날려버릴 수 있는 양초를 출력해라.

Sample Input

4
3 2 1 3

Sample Output

2

내 소스

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {

    static int birthdayCakeCandles(int n, int[] ar) {
        // Complete this function
        int max = ar[0];
        int maxCount = 0;
        
        for (int i = 0; i < n; i++)
        {
            if (max < ar[i])
            {
                max = ar[i];
            }
        }
        
        for (int i = 0; i < n; i++)
        {
            if (ar[i] == max)
            {
                maxCount++;
            }
        }
        
        return maxCount;
    }

    static void Main(String[] args) {
        int n = Convert.ToInt32(Console.ReadLine());
        string[] ar_temp = Console.ReadLine().Split(' ');
        int[] ar = Array.ConvertAll(ar_temp,Int32.Parse);
        int result = birthdayCakeCandles(n, ar);
        Console.WriteLine(result);
    }
}

shashank21j의 답안

자바의 경우는 나와 거의 같은 식으로 풀었다.

import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        // the number of candles
        int n = scan.nextInt();
        
        // store the current maximum height of any candle, initialize to the minimum possible height of any candle
        int maxHeight = 1; 
        
        // count the number of candles having the maximum height
        int countMax = 0;
        
        for(int i = 0; i < n; i++) {
            int tmp = scan.nextInt();
            
            // if you read in a value larger than maxHeight, set new maxHeight
            if(tmp > maxHeight) {
                maxHeight = tmp;
                countMax = 1;
            }
            // if you read a value equal to the current value of maxHeight
            else if(tmp == maxHeight) {
            	// increment the count of candles having maximum height
                countMax++;
            }
        }
        scan.close();
        
        System.out.println(countMax);
    }
}

파이썬의 경우는 3줄로 표현이 가능하다.

n = input()
arr = map(int, raw_input().split())
print arr.count(max(arr))

느낀점

문제 자체는 그냥 주어진 배열의 맥스값을 구하고, 맥스값의 개수를 구하는 문제이다.