728x90

 

문제설명

입력 & 출력

 

나의 풀이

 

 

이번 문제는 슈퍼 마리오가 앞에 높인 버섯을 먹습니다. 이때 숫자를 100에 가장 가깝게 만들면 되는 문제입니다.

 

"모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다" 라는 말은 즉 100에 가장 가깝다면 중단하면 된다라는 뜻입니다.

 

그러면 이 때 문제에서 나왔듯이 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택해야 합니다.

 

먼저 빠른 입력을 위해 BufferedReader클래스를 사용하여 입력을 받아주고, sum변수에 누적하여 더해줍니다.

 

그리고 이제 현재 값과 다음 값 중 100에 더 가까운 수를 찾아야 합니다. 이때  Math.abs() 메서드를 사용하여 절댓값을 만들고 100에서 빼주면 거리의 차이를 알 수 있습니다.

 


 

  1. 첫 번째 입력 (10):
    • sum = 10
    • 90 <= 100 ➡️ 90이 더 작으므로 sum(10)으로 업데이트
    • closer = 10
  2. 두 번째 입력 (20):
    • sum = 10 + 20 = 30
    • 70 <= 90 ➡️ 70이 더 작으므로 sum(30)으로 업데이트
    • closer = 30 
  3. 세 번째 입력 (30):
    • sum = 30 + 30 = 60
    • 40 <= 70 ➡️ 40이 더 작으므로 sum(60)으로 업데이트
    • closer = 60 
  4. 네 번째 입력 (40):
    • sum = 60 + 40 = 100
    • 0 <= 40 ➡️ 0이 더 작으므로 sum(100)으로 업데이트
    • closer = 100 
  5. 다섯 번째 입력 (50):
    • sum = 100 + 50 = 150
    • 50 > 0 ➡️ 50이 더 크므로 업데이트 ❌
    • closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
  6. 여섯 번째 입력 (60):
    • sum = 150 + 60 = 210
    • closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
  7. 일곱 번째 입력 (70):
    • sum = 210 + 70 = 280
    • closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
  8. 여덟 번째 입력 (80):
    • sum = 280 + 80 = 360
    • closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
  9. 아홉 번째 입력 (90):
    • sum = 360 + 90 = 450
    • closer = 100 (이전에 closer가 100으로 업데이트된 후에는 더 이상 업데이트하지 않음)
  10. 열 번째 입력 (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에 가장 가까운 수에서 멈출 수 있습니다.

 

 

참고❗️

 

[Algorithm] 완전 탐색, 브루트 포스: 가장 단순한 알고리즘(Brute Force) 알아보기

한 사람이 단어를 생각하고 다른 사람이 그 단어를 추측하는 만약 "단어 맞추기" 게임을 한다면 추측하는 사람은 가능한 모든 단어를 시도하여 맞출 때까지 계속합니다. 예를 들어 추측하는 사

pixx.tistory.com

 

[JAVA] 입출력, BufferedReader, StringTokenizer, StringBuilder 알아보기

Java로 코딩테스트를 보거나 입력을 사용해야 할 때 Scanner 클래스를 사용하면 편리하지만 속도가 느리다는 단점이 있습니다. 그렇기 때문에 속도가 빠른 BufferReader 클래스를 사용을 하면 시간복

pixx.tistory.com