๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

๊ณผ์ผ ์žฅ์ˆ˜ - Java [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต]

by ๊ทคํ”ผํ‚ค 2022. 12. 24.

 

โค๏ธ Problem

๋”๋ณด๊ธฐ
  • ๋ฌธ์ œ
    ๊ณผ์ผ ์žฅ์ˆ˜๊ฐ€ ์‚ฌ๊ณผ ์ƒ์ž๋ฅผ ํฌ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๊ณผ๋Š” ์ƒํƒœ์— ๋”ฐ๋ผ 1์ ๋ถ€ํ„ฐ k์ ๊นŒ์ง€์˜ ์ ์ˆ˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉฐ, k์ ์ด ์ตœ์ƒํ’ˆ์˜ ์‚ฌ๊ณผ์ด๊ณ  1์ ์ด ์ตœํ•˜ํ’ˆ์˜ ์‚ฌ๊ณผ์ž…๋‹ˆ๋‹ค. ์‚ฌ๊ณผ ํ•œ ์ƒ์ž์˜ ๊ฐ€๊ฒฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

    ํ•œ ์ƒ์ž์— ์‚ฌ๊ณผ๋ฅผ m๊ฐœ์”ฉ ๋‹ด์•„ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค.
    ์ƒ์ž์— ๋‹ด๊ธด ์‚ฌ๊ณผ ์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๊ฐ€ p (1 ≤ p ≤ k)์ ์ธ ๊ฒฝ์šฐ, ์‚ฌ๊ณผ ํ•œ ์ƒ์ž์˜ ๊ฐ€๊ฒฉ์€ p * m ์ž…๋‹ˆ๋‹ค.
    ๊ณผ์ผ ์žฅ์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ์‚ฌ๊ณผ๋ฅผ ํŒ”์•˜์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ๊ณ„์‚ฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.(์‚ฌ๊ณผ๋Š” ์ƒ์ž ๋‹จ์œ„๋กœ๋งŒ ํŒ๋งคํ•˜๋ฉฐ, ๋‚จ๋Š” ์‚ฌ๊ณผ๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค)

    ์˜ˆ๋ฅผ ๋“ค์–ด, k = 3, m = 4, ์‚ฌ๊ณผ 7๊ฐœ์˜ ์ ์ˆ˜๊ฐ€ [1, 2, 3, 1, 2, 3, 1]์ด๋ผ๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด [2, 3, 2, 3]์œผ๋กœ ๊ตฌ์„ฑ๋œ ์‚ฌ๊ณผ ์ƒ์ž 1๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ํŒ๋งคํ•˜์—ฌ ์ตœ๋Œ€ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    (์ตœ์ € ์‚ฌ๊ณผ ์ ์ˆ˜) x (ํ•œ ์ƒ์ž์— ๋‹ด๊ธด ์‚ฌ๊ณผ ๊ฐœ์ˆ˜) x (์ƒ์ž์˜ ๊ฐœ์ˆ˜) = 2 x 4 x 1 = 8
    ์‚ฌ๊ณผ์˜ ์ตœ๋Œ€ ์ ์ˆ˜ k, ํ•œ ์ƒ์ž์— ๋“ค์–ด๊ฐ€๋Š” ์‚ฌ๊ณผ์˜ ์ˆ˜ m, ์‚ฌ๊ณผ๋“ค์˜ ์ ์ˆ˜ score๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ณผ์ผ ์žฅ์ˆ˜๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ์ œํ•œ ์‚ฌํ•ญ
    • 3 ≤ k ≤ 9
    • 3 ≤ m ≤ 10
    • 7 ≤ score์˜ ๊ธธ์ด ≤ 1,000,000
    • 1 ≤ score[i] ≤ k
    • ์ด์ต์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” 0์„ return ํ•ด์ฃผ์„ธ์š”.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no k m score return
1 3 4 [1, 2, 3, 1, 2, 3, 1] 8
2 4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33
  1. ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ๊ณผ ์ƒ์ž๋ฅผ ํฌ์žฅํ•˜์—ฌ ๋ชจ๋‘ ํŒ”๋ฉด ์ตœ๋Œ€ ์ด์ต์„ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์‚ฌ๊ณผ ์ƒ์ž               ๊ฐ€๊ฒฉ
      [1, 1, 2]              1 x 3 = 3
      [2, 2, 2]              2 x 3 = 6
      [4, 4, 4]              4 x 3 = 12
      [4, 4, 4]              4 x 3 = 12
    ๋”ฐ๋ผ์„œ (1 x 3 x 1) + (2 x 3 x 1) + (4 x 3 x 2) = 33์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’› Solution

ํ’€์ด 1

import java.util.Arrays;
class Solution {
    public int solution(int k, int m, int[] score) {
        Arrays.sort(score);
        int price = 0;
        int length = score.length-m;
        while(length >= 0) {
            int lowest = score[length];
            price += lowest * m;
            length = length-m;
        }
        return price;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ GOOD๐Ÿ˜‹


 


 

ํ’€์ด 2

import java.util.Arrays;
class Solution {
    public int solution(int k, int m, int[] score) {
        int price = 0;
        Arrays.sort(score);

        for(int i = score.length; i >= m; i -= m){
            price += score[i-m] * m;
        }
        return price;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ GOOD๐Ÿ˜‹


 

๐Ÿ’œ Comment

ํ’€์ด 1์„ ์„ค๋ช…ํ•˜๋ฉด ๋จผ์ €, int[] score๋ฅผ Arrays.sort๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋“ฑ๊ธ‰์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์ƒ์ž์— ๋‹ด๊ธฐ ์œ„ํ•จ์ด์—ˆ๋‹ค. ๋ฌผ๋ก  ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ๋ฐฐ์—ด์˜ ์•ž์—์„œ๋ถ€ํ„ฐ ๋Š์–ด๊ฐ€๋Š”๊ฒŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ดํ•ด๊ฐ€ ๋” ์‰ฝ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด Collections.reverseOrder();๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ Integer๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ–ˆ๋‹ค. ๊ตณ์ด ๋ถˆํ•„์š”ํ•œ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์‹ซ์–ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ๋‹ค.

๊ทธ ๋‹ค์Œ, ๊ฐ€๊ฒฉ์„ ๋ˆ„์ ์‹œํ‚ฌ int price๋ฅผ ์„ ์–ธํ•˜๊ณ  ์‚ฌ๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜ int length์— score.length-m;์„ ๋„ฃ์—ˆ๋‹ค. m์„ ๋บ€ ์ด์œ ๋Š” ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ m๊ฐœ ์•ž์— ์žˆ๋Š” ๋“ฑ๊ธ‰์„ ์‚ฐ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ์˜€๋‹ค. ํ•ด๋‹น ๋ฐ•์Šค์˜ ์ตœ์ € ๋“ฑ๊ธ‰์ด ๋’ค์—์„œ๋ถ€ํ„ฐ m๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ ๋‹ค์Œ, while ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ length๊ฐ€ 0๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋„๋ก ํ•˜์˜€๋Š”๋ฐ ์ด๋Š” m๊ฐœ์”ฉ ํ•œ ์ƒ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ length๋ฅผ ๋ฐ˜๋ณต๋ฌธ์ด ๋„๋Š” ๋™์•ˆ length-m;์˜ ๊ฐ’์„ ๋„ฃ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  int lowest๋Š” length ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๋Š” score์˜ ๊ฐ’์„ ๊ฐ–๋„๋ก ํ•˜์—ฌ ํ•ด๋‹น ์ƒ์ž์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ๋“ฑ๊ธ‰์ด ๋“ค์–ด๊ฐ€๋„๋ก ํ•˜์˜€๋‹ค. int price์—๋Š” ์‚ฌ๊ณผ๋“ฑ๊ธ‰(lowest)*์‚ฌ๊ณผ๊ฐœ์ˆ˜(m)์„ ๋ˆ„์ ์‹œ์ผฐ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†์‰ฝ๊ฒŒ price๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ’€์ด 1๊ณผ ํ’€์ด 2์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•˜๋‚˜, while๋ฌธ์„ ์ผ๋Š”์ง€์™€ for๋ฌธ์„ ์ผ๋Š”์ง€ ์ •๋„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

 

 

8400์œ„

 

๋Œ“๊ธ€