자바 공부

백준 연습문제(JAVA공부) 2739, 2839, 10430 문제풀이

sh1256 2021. 1. 16. 19:53
728x90

백준 2739번 (www.acmicpc.net/problem/2739)

첫 번째 문제는 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하는문제이다.

for반복문을 이용해서 간단히 문제라서 금방 풀 수 있었다.

 

처음에 틀려서 당황했다. 혹시 이거 때문에 틀렸나 해서 '*'와 '=' 앞뒤에 공백을 추가하니 통과되었다.

 

백준 2839번 (www.acmicpc.net/problem/2839)

이번에 풀 3문제 중에 가장 어려웠던 것 같다.

문제가 상당히 길다..;;

이 문제에서 주의할 점은 "상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다."는 것이다. 

 

처음에 n을 5로 나눈 나머지가 3으로 나누어 지면 n/5+(n%5)/3이 정답이라고 생각했다. 하지만 예제 입력인 6을 입력하니, 3킬로그램 봉지 2개를 들고 갈 수 있음에도 -1이 출력되었다.

문제를 바로잡고자 만약 처음에 n을 5로 나눈 나머지가 3으로 나누어 지지 않으면 n을 3으로 먼저 나눈 후 나머지를5로 나누어 보기로했다. 그래서 6을 입력했을 때 2가 출력되었다. 하지만 그다음 11을 입력할 때 문제가 다시 생겼다. 그래서 알고리즘을 애초에 뒤집어서 완성한 코드가 아래의 것이다.

*** 5킬로그램 봉지를 우선시 하기 때문에, 최대한 5킬로봉지를 확보해야 한다. ***

1. 먼저 11을 5로 나눈다. 몫은 2, 나머지는 1이 된다. 

2. 먼저 5킬로봉지를 최대한 많이 챙겼을 때 할 때 (5킬로 2봉지) 1킬로가 남는데 이게 3으로 나누어 떨어지지 않기 때문에 5킬로 두봉지로 설탕을 가져갈 수 없다. 어쩔 수 없이 5킬로 한 봉지는 포기해야 한다.

3. 몫인 2에 -1을 한 1만큼 5킬로 봉지를 챙긴다. 그럼 나머지는 6이 남는데 이번엔 3으로 나누어 떨어진다. 

4. 최종적으로 5킬로 1봉지, 3킬로 2봉지, 총 3봉지를 챙기면 된다. 

 

위의 방법을 응용하여 코드를 작성했다. 

 

통과!!

 

백준 10430번 (www.acmicpc.net/problem/10430)

간단한 문제이다!! A, B, C를 순서대로 입력받고 각각의 계산 결과를 출력하면 된다 ㅎㅎ

내가 만든 소스코드

 

통과!!