먹었으면 뇌를 쓰자
백준 25304 java - 영수증 본문
문제
막힌 코드
(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 메소드 풀이보다 길고 복잡해 보이지만
로직 자체는 거의 똑같고, 좀 더 자세히 풀어서 쓴 것이다.
무엇보다 내가 스스로 생각하고 구현에 성공했다!
'JAVA > 백준 알고리즘' 카테고리의 다른 글
백준 11021 java - A+B-7 (0) | 2022.11.08 |
---|---|
백준 15552 java - 빠른 A+B (0) | 2022.11.07 |
백준 8393 java - 합 (이 글을 보면 도와주세요) (1) | 2022.11.05 |
백준 10950 java - A+B-3 (0) | 2022.11.05 |
백준 2739 java - 구구단 (야호~ 한 번에 맞힘) (0) | 2022.11.04 |