[구름톤 챌린지] Day8. 통증 (Java)

2023. 8. 23. 15:09·Algorithms(CT)/Goorm
 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io

 

 

 

===문제 설명===

구름-그라운드 게임에는 통증이라는 시스템이 있다.

게임 안에는 통증 수치를 감소시켜 주는 아이템이 3종류가 있다.

아이템의 이름은 bandage, medicine, painkiller 이고, 각 아이템을 사용 시 1, 7, 14 만큼 통증 수치를 감소시켜 준다.

 

플레이어는 적과의 전투에서 피해를 입어 현재 N의 통증 수치를 가지고 있다.

플레이어가 통증 수치를 0으로 줄이기 위해 필요한 아이템의 최소 개수를 구해보자.

단, 사용했을 때 통증 수치가 0보다 작아지는 아이템은 사용할 수 없음에 유의합시다.

 


🌟 T I P 🌟

  • 현재 상태에서 최고의 선택을 찾아 선택하는 그리디(GREEDY:탐욕법)를 사용합니다.
  • 돈을 셀 때와 마찬가지로 pain을 가장 큰 단위수인 painkiller(14)를 사용할 수 있는지 확인해 모두 사용하고, 그다음 medicine(7)을 사용할 수 있을 만큼 모두 사용하고, 그 이후에 bandage(1)을 사용해 pain을 0으로 만들어 줍니다.

 

🔖 풀이과정

1. 아이템 사용 횟수를 저장할 answer를 만들고, 각 아이템의 통증 감소 수치를 저장할 배열 items를 만들어줍니다.

int answer=0;// 아이템 사용 최소 갯수

//통증 감소 수치
int[] items = {14,7,1}; // painkiller, medicine, bandage

 

2. painkiller > medicine > bandage 순으로 아이템을 가져와서 해당 아이템을 사용할 수 있을 만큼 사용해 줍니다.

사용한 아이템 갯수는 answer에 더해주고, item을 사용해 치료된 후의 통증을 다시 저장해 줍니다.

//저장된 item 순서대로 하나씩 가져옴
for(int i=0;i<items.length;i++){ 

    //item을 사용할 수 있을 만큼 사용한다는 것은
    //pain-items[i]>0일 때 (pain-items[i])*cnt 하는 것입니다.
    //따라서, pain/item의 몫은 item을 사용할 수 있는 최대한의 갯수 입니다.
    answer+=pain/items[i];//answer = answer + pain/items[i];
    
    //pain을 item으로 나눈 나머지 -> 남은 통증
    pain%=items[i];//pain = pain % items[i]
}

 

3. pain이 0이 되었을 때 사용한 아이템의 개수 answer를 출력해 줍니다.


전체 코드

import java.io.*;
class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int pain = Integer.parseInt(br.readLine());//통증
        int answer=0;// 아이템 사용 최소 갯수
		
        int[] items = {14,7,1}; //painkiller, medicine, bandage
		
        // item을 순서대로 가져옵니다.
        for(int i=0;i<items.length;i++){
			
            //item을 최대 몇 개 사용할 수 있는지 구하기
            //pain/item(몫)
            answer+=pain/items[i];//answer = answer + pain/items[i]
 
            //item을 사용하고 난 후의 남은 통증 (나머지)
            pain%=items[i];//pain = pain % items[i];
        }
		
        System.out.println(answer);
    }
}

후기

별이 2개짜리 문제라지만 사실은 1개 정도로 느껴지는 문제네요.

그렇지만 그리디 관점에서 반복문을 한 번도 사용하지 않고 풀어야 해서 그 부분이 조금 어려운 것 같습니다.!

 

'Algorithms(CT) > Goorm' 카테고리의 다른 글

[구름톤 챌린지] Day12 발전기 (Java)  (0) 2023.08.29
[구름톤 챌린지] Day11 통증 (2)  (0) 2023.08.29
[구름톤 챌린지] Day7 구름 찾기 깃발 (Java)  (0) 2023.08.23
[구름톤 챌린지] Day5. 이진수 정렬  (0) 2023.08.19
[구름톤 챌린지] Day1. 운동 중독 플레이어 (Java)  (0) 2023.08.16
'Algorithms(CT)/Goorm' 카테고리의 다른 글
  • [구름톤 챌린지] Day12 발전기 (Java)
  • [구름톤 챌린지] Day11 통증 (2)
  • [구름톤 챌린지] Day7 구름 찾기 깃발 (Java)
  • [구름톤 챌린지] Day5. 이진수 정렬
gwee_99
gwee_99
bE bETTER!
  • gwee_99
    얼렁이와 뚱땅이
    gwee_99
  • 전체
    오늘
    어제
    • ====Category====
      • Algorithms(CT)
        • Programmers
        • Baekjoon
        • Goorm
      • Web
        • Error 해결
      • BackEnd
        • Spring
        • JPA
      • FrontEnd
        • HTML.CSS
        • JavaScript
      • Language
        • Java
      • Cloud
      • CSTS
      • Books
        • IT 5분 잡학사전
      • 일상
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    노마드코더
    Lv.1
    Til
    HTML
    인프런
    자바
    lv.4
    개발자북클럽
    백준
    DP
    구름톤 챌린지
    제대로 파는 자바스크립트
    그리디
    BFS
    스택
    Greedy
    구름
    LV.3
    BOJ
    호텔 대실
    IT 잡학사전
    LV.2
    DFS
    lv2
    IT 5분 잡학사전
    코딩테스트
    프로그래머스
    java
    존안님
    따라하며 배우는 html css
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwee_99
[구름톤 챌린지] Day8. 통증 (Java)
상단으로

티스토리툴바