Contents

개미 ꡰ단(with. Java)

   Jan 4, 2024     1 min read

β€œκ°œλ―Έ ꡰ단” λ¬Έμ œμ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

μ½”λ”© ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ©°, ν’€μ—ˆλ˜ λ¬Έμ œμ— λŒ€ν•œ νšŒκ³ μ™€ λ‹€λ₯Έ 풀이 방법을 μ•Œμ•„λ³΄λ©°, μ•Œμ•„κ°€κ³ μž ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

문제

개미 ꡰ단이 사λƒ₯을 λ‚˜κ°€λ €κ³  ν•©λ‹ˆλ‹€.

κ°œλ―Έκ΅°λ‹¨μ€ 사λƒ₯감의 체λ ₯에 λ”± λ§žλŠ” 병λ ₯을 데리고 λ‚˜κ°€λ €κ³  ν•©λ‹ˆλ‹€.

μž₯κ΅°κ°œλ―ΈλŠ” 5의 곡격λ ₯을, λ³‘μ •κ°œλ―ΈλŠ” 3의 곡격λ ₯을 μΌκ°œλ―ΈλŠ” 1의 곡격λ ₯을 가지고 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 체λ ₯ 23의 μ—¬μΉ˜λ₯Ό 사λƒ₯ν•˜λ €κ³  ν•  λ•Œ, 일개미 23마리λ₯Ό 데리고 가도 λ˜μ§€λ§Œ, μž₯ꡰ개미 λ„€ λ§ˆλ¦¬μ™€ λ³‘μ •κ°œλ―Έ ν•œ 마리λ₯Ό 데리고 κ°„λ‹€λ©΄ 더 적은 병λ ₯으둜 사λƒ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

사λƒ₯감의 체λ ₯ hpκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 사λƒ₯감의 체λ ₯에 λ”± 맞게 μ΅œμ†Œν•œμ˜ 병λ ₯을 κ΅¬μ„±ν•˜λ €λ©΄ λͺ‡ 마리의 κ°œλ―Έκ°€ ν•„μš”ν•œμ§€λ₯Ό returnν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œμ‚¬ν•­

hpλŠ” μžμ—°μˆ˜μž…λ‹ˆλ‹€.

0 ≀ hp ≀ 1000

μž…μΆœλ ₯ μ˜ˆμ‹œ

hpresult
235
246
999201

λ¬Έμ œμ— λŒ€ν•œ λ‚˜μ˜ 풀이

class Solution {
    public int solution(int hp) {
        int answer = 0;
        int quo = 0;
        int rem = hp;
        for(int i = 5; i >= 1; i -= 2){
            quo = rem / i;
            rem = rem % i;
            if(quo != 0){
                answer += quo;
            }
        }
        return answer;
    }
}

풀이 μ„€λͺ…

μž…λ ₯: hp - νšŒλ³΅ν•΄μ•Ό ν•˜λŠ” 체λ ₯.

좜λ ₯: 힐링 μ•„μ΄ν…œμ„ μ‚¬μš©ν•˜μ—¬ 회볡된 횟수.

Greedy μ•Œκ³ λ¦¬μ¦˜ ν™œμš©: Greedy μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ μ΅œλŒ€ν•œ 큰 λ‹¨μœ„μ˜ 힐링 μ•„μ΄ν…œμ„ μ‚¬μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©λœ ν•¨μˆ˜ μ†Œκ°œ:

rem / i와 rem % i: λ‚˜λˆ—μ…ˆ 연산을 톡해 힐링 μ•„μ΄ν…œμ„ μ‚¬μš©ν•œ 횟수(quo)와 λ‚˜λ¨Έμ§€ 체λ ₯(rem)을 κ³„μ‚°ν•©λ‹ˆλ‹€.

κ°œμ„  κ°€λŠ₯ν•œ 점:

μƒμˆ˜ μ‚¬μš©: ν˜„μž¬ μ½”λ“œμ—μ„œ 5와 2λŠ” μƒμˆ˜λ‘œ μ‚¬μš©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒμˆ˜λ₯Ό λ³€μˆ˜λ‘œ λŒ€μ²΄ν•˜μ—¬ μœ μ—°μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

νš¨μœ¨μ„±: μ½”λ“œλŠ” 주어진 힐링 μ•„μ΄ν…œμ˜ μ’…λ₯˜μ— 따라 순차적으둜 ν™•μΈν•˜λ©° νžλ§μ„ μ‹œλ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 졜적의 힐링 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ°Ύμ•„λ‚΄λŠ” 방법을 κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μž…λ ₯ μ˜ˆμ™Έ 처리: 음수 λ˜λŠ” 잘λͺ»λœ 값이 μž…λ ₯될 κ²½μš°μ— λŒ€ν•œ μ˜ˆμ™Έ μ²˜λ¦¬κ°€ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ κ°œμ„  사항을 κ³ λ €ν•˜μ—¬ μ½”λ“œλ₯Ό λ”μš± μ™„μ „ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.