[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°(C++)

2023. 7. 11. 11:25Β·πŸ–₯️ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/148653

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°

λ§ˆλ²•μ˜ 세계에 μ‚¬λŠ” λ―Όμˆ˜λŠ” μ•„μ£Ό 높은 탑에 μ‚΄κ³  μžˆμŠ΅λ‹ˆλ‹€. 탑이 λ„ˆλ¬΄ λ†’μ•„μ„œ κ±Έμ–΄ λ‹€λ‹ˆκΈ° νž˜λ“  λ―Όμˆ˜λŠ” λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°μ˜ λ²„νŠΌμ€ νŠΉλ³„ν•©λ‹ˆλ‹€. λ§ˆλ²•μ˜ μ—˜

school.programmers.co.kr

문제 μ„€λͺ…

λ§ˆλ²•μ˜ 세계에 μ‚¬λŠ” λ―Όμˆ˜λŠ” μ•„μ£Ό 높은 탑에 μ‚΄κ³  μžˆμŠ΅λ‹ˆλ‹€. 탑이 λ„ˆλ¬΄ λ†’μ•„μ„œ κ±Έμ–΄ λ‹€λ‹ˆκΈ° νž˜λ“  λ―Όμˆ˜λŠ” λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°μ˜ λ²„νŠΌμ€ νŠΉλ³„ν•©λ‹ˆλ‹€. λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°μ—λŠ” -1, +1, -10, +10, -100, +100 λ“±κ³Ό 같이 μ ˆλŒ“κ°’μ΄ 10c (c ≥ 0 인 μ •μˆ˜) ν˜•νƒœμΈ μ •μˆ˜λ“€μ΄ 적힌 λ²„νŠΌμ΄ μžˆμŠ΅λ‹ˆλ‹€. λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°μ˜ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ ν˜„μž¬ μΈ΅ μˆ˜μ— λ²„νŠΌμ— μ ν˜€ μžˆλŠ” 값을 λ”ν•œ 측으둜 μ΄λ™ν•˜κ²Œ λ©λ‹ˆλ‹€. 단, μ—˜λ¦¬λ² μ΄ν„°κ°€ μœ„μΉ˜ν•΄ μžˆλŠ” μΈ΅κ³Ό λ²„νŠΌμ˜ 값을 λ”ν•œ κ²°κ³Όκ°€ 0보닀 μž‘μœΌλ©΄ μ—˜λ¦¬λ² μ΄ν„°λŠ” 움직이지 μ•ŠμŠ΅λ‹ˆλ‹€. 민수의 μ„Έκ³„μ—μ„œλŠ” 0측이 κ°€μž₯ μ•„λž˜μΈ΅μ΄λ©° μ—˜λ¦¬λ² μ΄ν„°λŠ” ν˜„μž¬ λ―Όμˆ˜κ°€ μžˆλŠ” 측에 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°λ₯Ό 움직이기 μœ„ν•΄μ„œ λ²„νŠΌ ν•œ λ²ˆλ‹Ή λ§ˆλ²•μ˜ 돌 ν•œ 개λ₯Ό μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€.예λ₯Ό λ“€μ–΄, 16측에 μžˆλŠ” λ―Όμˆ˜κ°€ 0측으둜 κ°€λ €λ©΄ -1이 적힌 λ²„νŠΌμ„ 6번, -10이 적힌 λ²„νŠΌμ„ 1번 눌러 λ§ˆλ²•μ˜ 돌 7개λ₯Ό μ†Œλͺ¨ν•˜μ—¬ 0측으둜 갈 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, +1이 적힌 λ²„νŠΌμ„ 4번, -10이 적힌 λ²„νŠΌ 2λ²ˆμ„ λˆ„λ₯΄λ©΄ λ§ˆλ²•μ˜ 돌 6개λ₯Ό μ†Œλͺ¨ν•˜μ—¬ 0측으둜 갈 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆλ²•μ˜ λŒμ„ 아끼기 μœ„ν•΄ λ―Όμˆ˜λŠ” 항상 μ΅œμ†Œν•œμ˜ λ²„νŠΌμ„ λˆŒλŸ¬μ„œ μ΄λ™ν•˜λ €κ³  ν•©λ‹ˆλ‹€. λ―Όμˆ˜κ°€ μ–΄λ–€ μΈ΅μ—μ„œ μ—˜λ¦¬λ² μ΄ν„°λ₯Ό 타고 0측으둜 λ‚΄λ €κ°€λŠ”λ° ν•„μš”ν•œ λ§ˆλ²•μ˜ 돌의 μ΅œμ†Œ 개수λ₯Ό μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. λ―Όμˆ˜μ™€ λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°κ°€ μžˆλŠ” 측을 λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ storey κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 0측으둜 κ°€κΈ° μœ„ν•΄ ν•„μš”ν•œ λ§ˆλ²•μ˜ 돌의 μ΅œμ†Œκ°’μ„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.

λ‚΄ 풀이

μ²˜μŒμ—λŠ” λ²„νŠΌλŒ€λ‘œ 100으둜 λ‚˜λˆ„κ³ , 10으둜 λ‚˜λˆ„λ©° 문제λ₯Ό ν’€μ—ˆλŠ”λ° 잘 λ˜μ§€ μ•Šμ•˜λ‹€.

κ·Έλž˜μ„œ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό μ°Έκ³ ν•˜μ—¬ λ―Όμˆ˜κ°€ μžˆλŠ” 측을 10μ”© λ‚˜λˆ κ°€λ©° 1의 자리 μˆ˜μ— λŒ€ν•œ 처리λ₯Ό μ°¨κ·Όμ°¨κ·Ό ν•΄λ‚˜κ°€λ‹ˆ λ¬Έμ œκ°€ ν’€λ Έλ‹€. 1의 자리 μˆ˜μ— λŒ€ν•œ μ²˜λ¦¬λŠ” μ½”λ“œμ— μ£Όμ„μœΌλ‘œ 적어 λ†“μ•˜λ‹€. 

#include <string>
#include <vector>

using namespace std;

int solution(int storey) {
    int answer = 0;
    
    while(storey > 0)
    {
        int n = storey % 10; // 1의 자리의 수
        storey /= 10;        // 자리수 였λ₯Έμͺ½μœΌλ‘œ 1μΉΈμ”© 이동
        
        // 1) 1의 μžλ¦¬μˆ˜κ°€ 5미만일 λ•Œ, 
        // n만큼 λ²„νŠΌ λˆ„λ₯΄κΈ°
        if(n < 5)
        {
            answer += n;
        }
        
        // 2) 1의 μžλ¦¬μˆ˜κ°€ 5초과일 λ•Œ, 
        // ν•œ 자리 수 μœ„ λ²„νŠΌ 1번 λˆ„λ₯΄κ³  10-n만큼 λ²„νŠΌ λˆ„λ₯΄κΈ° 
        else if(n > 5)
        {
            ++storey;
            answer += 10-n;
        }
        // 3) 1의 μžλ¦¬μˆ˜κ°€ 5일 λ•Œ,
        // λ‹€μŒ μžλ¦¬μˆ˜κ°€ 5이상이면 2번
        // λ‹€μŒ μžλ¦¬μˆ˜κ°€ 5미만이면 1번
        // ex- 65 : 1번 -> 11번, 2번 9번
        //   - 45 : 1번 -> 9번, 2번 10번
        else
        {
            int test = storey % 10;    
            if(test >= 5)
            {
                ++storey;
            }
            answer += n;
        }
        
    }
    
    return answer;
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ–₯️ Study Note > Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 124 λ‚˜λΌμ˜ 숫자(C++)  (0) 2023.07.14
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - κ΄„ν˜Έ νšŒμ „ν•˜κΈ°(C++)  (0) 2023.07.12
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 배달(C++)  (0) 2023.07.10
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 두 큐 ν•© κ°™κ²Œ λ§Œλ“€κΈ°(C++)  (0) 2023.07.04
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - N개의 μ΅œμ†Œκ³΅λ°°μˆ˜(C++)  (0) 2023.07.03
'πŸ–₯️ Study Note/Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 124 λ‚˜λΌμ˜ 숫자(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - κ΄„ν˜Έ νšŒμ „ν•˜κΈ°(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 배달(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 두 큐 ν•© κ°™κ²Œ λ§Œλ“€κΈ°(C++)
Beankong_
Beankong_
μ£Όλ‹ˆμ–΄ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ¨Έ 곡뢀 기둝
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (141)
      • β›… Daily (0)
      • πŸ–₯️ Study Note (135)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • 🧭 Devlog (6)
        • μ˜€λ‹΅λ…ΈνŠΈ (2)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
Beankong_
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - λ§ˆλ²•μ˜ μ—˜λ¦¬λ² μ΄ν„°(C++)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”