- 초기에 해당문제를 반복문으로 접근했다가 시간 초과로 인해서 코드를 싹 갈아 엎었다..
- 아래 그림과 같이 입력받은 값을 정수 5로 나눈 값과 나머지값을 확인해서 접근했다.
- 그리디 알고리즘의 접근방법은 우선 큰 봉지로 묶는 것이라고 배웠다.
- 그래서 5로 나눴을 때 발생할 수 있는 경우를 5가지로 나눴고, 아래와 같이 3kg 봉지로 묶을 수 있다.
- 나머지 1의 경우를 잘 보면, 아래에 b5 - 1 - +2 라고 적어놨다. 이 말은 5kg 포장되어있는 것을 풀러서 3kg 봉지로 담는다는 의미이다.
- 각 케이스 별로 정리해 두었다.
- 자, 이제 코드를 보자
- 주의해야할 점은, 포장되어있는 봉지를 확인해야한다는 것이다..
- 나머지가 있어서 포장되어 있는 봉지를 뜯어서 3kg로 그룹화 시켜야하는데.. 없으면 이는 나눌수 없음을 의미한다.
- 따라서 -1을 반환하게 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Number2839 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int N = Integer.parseInt( br.readLine() );
int b5 = N / 5 ;
int r = N % 5 ;
if( r == 1 && b5 >= 1 ) {
b5 = b5 - 1 + 2;
} else if( r == 2 && b5 >= 2 ) {
b5 = b5 - 2 + 4;
} else if( r == 3 ) {
b5 = b5 + 1;
} else if( r == 4 && b5 >= 1 ) {
b5 = b5 - 1 + 3;
} else if( r == 0 ) {
} else {
b5 = -1;
}
System.out.println( b5 );
}
}
'Algorithm' 카테고리의 다른 글
[BaekJoon] 백준 알고리즘 15649번 / N과 M(1)/ 백트래킹 / Python (0) | 2023.02.28 |
---|---|
[BaekJoon] 백준 알고리즘 1926번 / 그림 / BFS / Python (0) | 2023.02.27 |
[BaekJoon] 백준 알고리즘 2775번 / 부녀회장이 될테야 (0) | 2023.02.24 |
[BaekJoon] 백준 알고리즘 10250번 / ACM 호텔 (0) | 2023.02.23 |
[BaekJoon] 백준 알고리즘 2869번 / 달팽이는 올라가고 싶다 (0) | 2023.02.23 |