SW Expert Academy
2072. 홀수만 더하기
10개의 수를 입력 받아, 그 중에서 홀수만 더한 값을 출력하는 프로그램을 작성하라.
[제약 사항]
각 수는 0 이상 10000 이하의 정수이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.
[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력
3 17 1 39 8 41 2 32 99 2
22 8 5 123 7 2 63 7 3 46
6 63 2 3 58 76 21 33 8 1
#2 208
#3 121
문제 그대로 홀수만 더해야 한다.
홀수는 2로 나누어 떨어지지 않는 정수로 1, 3, 5, 7, 9, ... 이다.
진행할 테스트 횟수를 받아서 반복문을 실행시킨다.
위의 예제에서는 3번의 반복이 이루어진다. (외부 for문 3회 반복)
반복문 안에서 10개씩 수를 입력받아 홀수만 더하는 로직을 구현해야 한다.
이중 for문을 사용해야겠구나.
내부 for문은 총 10번 반복! 먼저 숫자를 입력 받고, 홀수인지 검증하는 조건문이 필요하겠다.
만약 홀수라면 계속해서 합계를 저장한다.
내부 for문 한 세트가 끝나면 합계를 출력한다.
이제 다시 첫 번째 for문으로 올라가보자.
지금까지 저장한 합계(sum)는 한 세트에 대해 임무를 완수했다.
따라서 내부 for문에 들어가기 전에 0으로 초기화해준다.
내부 for문에 들어서면 정수를 입력 받아 홀수인지 검증하는 과정을 반복한다.
그렇게 이중 for문이 모두 진행되면 각 세트별 입력 받은 수 중 홀수의 합계를 출력할 수 있다.
Scanner와 BufferedReader를 사용한 소스 코드를 비교해보자.
( 위의 이미지와 네이버 블로그 주소 제 것입니다! 티스토리로 글 옮기느라 주소가 첨부되었습니다. 양해 부탁드립니다 🙇♀️)
· 코드길이
Scanner(406B) < BufferedReader(582B)
· 메모리
Scanner(20,420kb) > BufferedReader(16,076kb)
· 실행시간
Scanner(121ms) > BufferedReader(99ms)
Scanner는 입력 하나하나 받아 처리하지만, BufferedReader는 '버퍼' 말그대로 데이터를 버퍼에 보관하여 한 번에 전송하기 때문에 데이터양이 많을수록 Scanner보다 BufferedReader의 속도, 효율이 더 높을 수밖에 없다.
'CODING > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1954. 달팽이 숫자 (0) | 2022.05.29 |
---|
댓글