이제부터 퀴즈처럼 연산 부분이 시작된다. 이제 Java 기본에서 배웠던 반복문의 특징을 응용해서 풀어내야 한다. 문제가 간단해보여도 어떤 제어문을 사용 할지, 어느 부분을 내가 컨트롤 할 수 있을지 생각해야 해서 이런 문제는 자주 접해보는 수 밖에 없다. 지각능력이 좋으면 금방 아이디어를 얻을 수 있을 것 같다.
1. Main.java
package Algorithm05;
public class Main {
public static void main(String[] args) {
System.out.println("정수 n이 주어질 때,\n" +
" n이하의 짝수를 모두 더한 값을\n" +
" return 하도록 solution 함수를 작성해주세요.\n" +
"\n" +
"제한사항\n" +
"0 < n ≤ 1000");
Solution solution = new Solution();
solution.inputNum();
}
}
Java
복사
2. Solution.java
package Algorithm05;
import java.util.Scanner;
public class Solution {
//정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.////제한사항//0 < n ≤ 1000//필요데이터//입력값 n//스캐너//0 < n ≤ 1000 유효성검사 while//result//필요메서드//inputNum()//calculate()//n이하의 짝수//ex) 5면, 2, 4이다. (2*i) < n//i가 증가하면서 2의 배수로 진행, result에 값을 누적하면서 n전까지 가는 방식으로 가보자.//outputSum()int inputNum;
int result;
Scanner sc = new Scanner(System.in);
public Solution() {
}
void inputNum() {
while (true) {
System.out.println("짝수합을 구할 최대 숫자를 입력하세요.");
inputNum = sc.nextInt();
if (inputNum < 0 || inputNum > 1000) {
System.out.println("최대 숫자는 1~1000범위로 입력해주세요.");
continue;
} else {
calculate(inputNum);
break;
}
}
}
void calculate(int inputNum) {
for (int i = 1; i <= inputNum; i++) {
if (i * 2 <= inputNum) {
result += i * 2;
} else {
break;
}
}
outputSum(inputNum, result);
}
void outputSum(int intputNum, int result) {
System.out.printf("0부터 %d까지의 짝수를 모두 더한 값은 %d와 같습니다.", intputNum, result);
}
}
Java
복사