본문 바로가기

728x90

그리디

[백준] 9576 책 나눠주기 / 자바(Java) 문제 https://www.acmicpc.net/problem/9576 9576번: 책 나눠주기 백준이는 방 청소를 하면서 필요 없는 전공 서적을 사람들에게 나눠주려고 한다. 나눠줄 책을 모아보니 총 N권이었다. 책이 너무 많기 때문에 백준이는 책을 구분하기 위해 각각 1부터 N까지의 www.acmicpc.net 해설 그리디 알고리즘을 사용해 가장 많은 책을 주는 방법을 찾습니다. 책의 범위에서 시작의 오름차순으로 정렬해 그 중 가장 앞에 있는 것부터 하나씩 준다고 생각합니다. 책은 1~N까지로 정해져있기 때문에 selected배열을 통해 준 책과 안준 책을 분류합니다. 이후 책 범위를 정렬해 각자 최저번호에 가까운 책을 줍니다. 코드 import java.io.BufferedReader; import .. 더보기
[프로그래머스] 요격 시스템 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 가로 방향으로 발사되는 적 미사일을 세로 방향으로 발사되고 관통되는 미사일을 이용해 요격하여 모든 적 미사일을 파괴할 것입니다. 이때 최소로 필요하는 요격 미사일 개수를 구하면 되는 문제입니다. 타겟의 갯수가 500,000개로 각각의 수를 알아보기는 너무 많아 그리디 방식으로 해결방향을 잡습니다. 모든 타겟을 맞추어야 함으로 특정 기준으로 정렬하여 한 타겟의 범위에 포함되는 타겟을 제.. 더보기
[프로그래머스] 호텔 대실 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/155651# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 예약시간이 주어질 때 시간이 겹치지 않기 위한 최소한의 방의 개수를 구하는 문제이다. 만약 Bruteforce로 해결하려 한다면 배열 book_time의 길이가 1000이므로 1000!이 되어 연산이 불가능할 정도로 커진다. 따라서 그리디방식을 사용하여 문제를 풀기로 했다. (1)시작시간을 기준으로 정렬해주어 시간순서대로 방에 들어가도록 해주고, (2)새로운 시간이 들어올 때마다 끝.. 더보기

728x90