728x90
문제설명
입력 & 출력
나의 풀이
이번 문제는 슈퍼 마리오가 앞에 높인 버섯을 먹습니다. 이때 숫자를 100에 가장 가깝게 만들면 되는 문제입니다.
"모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다" 라는 말은 즉 100에 가장 가깝다면 중단하면 된다라는 뜻입니다.
그러면 이 때 문제에서 나왔듯이 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택해야 합니다.
먼저 빠른 입력을 위해 BufferedReader클래스를 사용하여 입력을 받아주고, sum변수에 누적하여 더해줍니다.
그리고 이제 현재 값과 다음 값 중 100에 더 가까운 수를 찾아야 합니다. 이때 Math.abs() 메서드를 사용하여 절댓값을 만들고 100에서 빼주면 거리의 차이를 알 수 있습니다.
- 첫 번째 입력 (10):
- sum = 10
- 90 <= 100 ➡️ 90이 더 작으므로 sum(10)으로 업데이트
- closer = 10
- 두 번째 입력 (20):
- sum = 10 + 20 = 30
- 70 <= 90 ➡️ 70이 더 작으므로 sum(30)으로 업데이트
- closer = 30
- 세 번째 입력 (30):
- sum = 30 + 30 = 60
- 40 <= 70 ➡️ 40이 더 작으므로 sum(60)으로 업데이트
- closer = 60
- 네 번째 입력 (40):
- sum = 60 + 40 = 100
- 0 <= 40 ➡️ 0이 더 작으므로 sum(100)으로 업데이트
- closer = 100
- 다섯 번째 입력 (50):
- sum = 100 + 50 = 150
- 50 > 0 ➡️ 50이 더 크므로 업데이트 ❌
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 여섯 번째 입력 (60):
- sum = 150 + 60 = 210
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 일곱 번째 입력 (70):
- sum = 210 + 70 = 280
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 여덟 번째 입력 (80):
- sum = 280 + 80 = 360
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 아홉 번째 입력 (90):
- sum = 360 + 90 = 450
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 열 번째 입력 (100):
- sum = 450 + 100 = 550
- closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
- 첫 번째 입력 (40):
- sum = 40
- 60 <= 100 ➡️ 60이 더 작으므로, sum(40)으로 업데이트
- closer = 40
- 두 번째 입력 (40):
- sum = 40 + 40 = 80
- 20 <= 60 ➡️ 20이 더 작으므로, sum(80)으로 업데이트
- closer = 80
- 세 번째 입력 (40):
- sum = 80 + 40 = 120
- 20 <= 20 ➡️ 같으므로, sum(120)으로 업데이트
- 같을 때는 최신으로 업데이트된 값(sum)이 큰 값이므로 자연스럽게 차이가 동일한 수 중 큰 값으로 업데이트합니다.
- closer = 120
따라서 100에 가장 가까운 수에서 멈출 수 있습니다.
참고❗️
'Coding Test > 백준' 카테고리의 다른 글
[백준] 설탕 배달 (그리디 Greedy 알고리즘 , 2839번, Java) (0) | 2024.06.25 |
---|---|
[백준] 적어도 대부분의 배수 (BufferedReader, StringTokenizer, 브루트 포스, ,1145번, Java) (0) | 2024.06.23 |
[백준] 뒤집힌 덧셈 (BufferedReader, StringBuilder, 1357번, Java) (0) | 2024.06.07 |
[백준] 캠핑 (BufferedReader, 4796번, Java) (0) | 2024.06.07 |
[백준] 세 막대 (삼각형 변의 길이 조건, 14215번, Java) (1) | 2024.06.06 |