[백준][C++] 18111번 - 마인크래프트

2023. 7. 10. 17:51·백준/C++
728x90
반응형

https://www.acmicpc.net/problem/18111

 

18111번: 마인크래프트

팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게

www.acmicpc.net


풀이

  1. 모든 땅의 높이만 같으면 되므로 N*M 크기의 땅을 선형변환 -> a[N*M]
  2. 모든 땅의 높이 중 최고 높이과 최저 높이 사이의 값이 땅을 고르는 높이가 될 수 있음
  3. 땅을 고르게 될 높이별로 땅을 고르는 시간 측정 -> 최솟 값 저장
  4. 이때 고르는 작업에 의한 인벤토리의 블록 개수 측정
    -> 음수라면 불가능한 작업이므로 시간 측정 배제
    -> 이때 작은 수에서 큰 수로 땅의 높이를 증가하면서 검사한다면, 작업 종료 후 인벤토리의 값이 음수가 되었을 때, 더 높은 높이의 땅들도 마찬가지로 블록이 부족하므로 작업이 불가능함 -> 반복문 종료(시간 단축)

답

#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;

int main()
{
    int N, M, B;
    cin >> N >> M >> B;
    N = N * M;
    int a[N];
    for (int i = 0; i < N; i++)
    {
        cin >> a[i];
    }
    sort(a, a + N);
    int time = INT_MAX, high;
    for (int h = a[0]; h <= a[N - 1]; h++)
    {
        int t = 0;
        int block = B;
        for (int i = 0; i < N; i++)
        {
            if (h > a[i])
            {
                block += a[i] - h;
                t += h - a[i];
            }
            else if (h < a[i])
            {
                block += a[i] - h;
                t += 2 * (a[i] - h);
            }
        }
        if (block < 0)
            break;
        if (t <= time)
        {
            time = t;
            high = h;
        }
    }
    cout << time << " " << high;
}
728x90
반응형

'백준 > C++' 카테고리의 다른 글

[백준][C++] 11659번 - 구간 합 구하기 4  (0) 2023.04.26
[백준][C++] 11727번 - 2×n 타일링 2  (0) 2023.04.17
'백준/C++' 카테고리의 다른 글
  • [백준][C++] 11659번 - 구간 합 구하기 4
  • [백준][C++] 11727번 - 2×n 타일링 2
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스
    단일 사이클
    추가 문제
    데이터패스
    C++
    코틀린
    자료구조
    상속
    사설 문제
    자바
    컴퓨터 구조 및 설계
    오블완
    메모리 계층 구조
    티스토리챌린지
    컴공 포트폴리오
    42서울
    반복자
    명령어
    백준
    컴퓨터구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[백준][C++] 18111번 - 마인크래프트
상단으로

티스토리툴바