먹었으면 뇌를 쓰자

백준 25304 java - 영수증 본문

JAVA/백준 알고리즘

백준 25304 java - 영수증

뇌이비 2022. 11. 5. 10:26

문제

 

 

 

 

 

 

막힌 코드

 

(a*b)를 for문을 통해 n번만큼 더하고 이것을 x와 비교해서

if문을 통해 같으면 Yes, 다르면 No를 출력하는 구조는 이해가 갔다.

 

그런데 (a*b)를 n번만큼 더한다는 코드를 어떻게 짜야할지 몰랐다.

 

 

 

 

 

정답 

 

구글링을 통해 "(a*b)를 n번만큼 더한다"는 코드를 쓰지 않고 푸는 방법을 찾았다.

 

 

- 총 금액(total)과 총 개수(count)를 Scanner 클래스로 입력받는다

- for문 안에서 물건 가격 a(price)와 물건 개수 b(num)를 Scanner 클래스로 입력받는다

 

★ for문 밖에서 total, count와 함께 한번에 입력받는 코드도 실행해봤는데 되지 않았다. 

price와 num이 i<count의 영향을 받기 때문에 그런 것인듯 하다.

 

- total에서 price*num을 뺀 값이 0이면 같다는 말이므로 Yes, 아니면 No를 출력한다

 

 

 

아래 방법은 위의 방법과 틀은 거의 같지만

sum=0 출발점 변수를 만들어서 "(a*b)를 n번만큼 더한다"는 연산을 쓰고 있다.

 

- int sum=0; 으로 출발점 변수를 만들어둔다

- sum+=(price*num); 으로 n번(count)만큼 (a*b)을 더해준다

- sum=total 일 때 Yes, 아니면 No를 출력한다

 

 

 

 

 

풀이 추가(* BufferedReader / BufferedWriter)

 

복습하면서 Buffered 메소드를 이용해 다시 풀어봤다.

알고리즘을 직접 손으로 써보면서 짜니까 

처음에 왜 이렇게 어렵게 느껴졌지 싶었다 ㅋㅋㅋ

 

Scanner 메소드 풀이보다 길고 복잡해 보이지만

로직 자체는 거의 똑같고, 좀 더 자세히 풀어서 쓴 것이다.

 

무엇보다 내가 스스로 생각하고 구현에 성공했다!

 

 

 

Comments