티스토리 뷰



참고: 이데일리 코딩 챌린지 기출 문제 자료실 https://coding.edaily.co.kr/bbs/board.php?bo_table=question



[1 문제내용] 승훈이는 숫자 중에서 홀수를 싫어하며 짝수만을 좋아합니다. 승훈이를 위해 하나의 정수가 입력되면 1부터 그 수까지 존재하는 짝수들의 합을 구하는 프로그램을 작성하세요. 예를 들어 10이 입력되면, 2 + 4 + 6 + 8 + 10으로 30을 출력합니다.

[입력조건] 정수 A가 입력됩니다. (0 <= A <= 10,000) [출력조건] 1부터 A까지의 숫자 중에서 짝수의 합을 구합니다. [입력예시 1] 4 [출력예시 1] 6 [입력예시 2] 10 [출력예시 2] 30


[풀이]


public static void main(String[] args) {
int input; //입력값 변수
int result = 0; //출력값

System.out.println("하나의 정수를 입력하세요.");
Scanner sc = new Scanner(System.in); //입력객체 생성

input = sc.nextInt(); //키보드 입력 정수값
for(int i=0; i <= input; i++) {
if(i%2 == 0) { //2로 나눈 나머지가 0이면 i는 짝수
result = result + i;
}
}
System.out.println(result);
}


[3 문제내용] 민규는 가벼운 기억상실증을 앓고 있습니다. 오늘 무엇인가를 외우면 잠을 자면서 일부를 잊는 증세를 보입니다. 영어시험을 준비하는 민규는 단어 N개를 모두 외워야 합니다. 민규는 하루에 A개의 단어를 외울 수 있습니다. 하지만, 밤에 잠을 자면서 B개를 까먹습니다. N개를 모두 외우는 날에 민규는 목적을 달성합니다. 또한 모두 외우는 날에는 밤에 단어를 까먹는 것을 생각하지 않고 N개의 단어를 모두 외웠다고 간주합니다. 민규가 외워야 하는 N개의 단어가 주어졌을 때, 단어를 모두 외우려면 며칠이 걸리는지 구하는 프로그램을 작성하세요. [입력조건] 첫째 줄에 세 정수 A, B, N이 공백으로 구분되어서 주어집니다. (1 ≤ B < A ≤ N ≤ 1,000,000,000) [출력조건] 첫째 줄에 민규가 N개의 단어를 모두 외우는데 며칠이 걸리는지 출력합니다. [입력예시 1] 2 1 5 [출력예시 1] 4 [입력예시 2] 3 2 6 [출력예시 2] 4

[풀이]

public static void main(String[] args) {
String input; //입력값 변수
int a;
int b;
int n;
int period = 0; //출력값 (단어를 모두 외우는데 걸리는 일 수)


System.out.println("A B N에 해당하는 세 개의 정수를 입력하시오." +
"입력 순서대로 공백을 기준으로 구분되어 정해집니다.");

Scanner sc = new Scanner(System.in); //입력객체 생성
input = sc.nextLine(); //키보드 입력 문자열
String inputArr[] = input.split(" ");

a = Integer.parseInt(inputArr[0]);
b = Integer.parseInt(inputArr[1]);
n = Integer.parseInt(inputArr[2]);

int sum = 0;
for(int i=0; i < n; i++) {
if((sum + a) <= n) {
sum = (sum + a) - b;
period = period + 1;
} else {
if(sum < n) {
System.out.println("sum=" + sum + ", n= " + n);
period = period + 1;
break;
}
}
}
System.out.println(period);
}


[4 문제내용] 동빈이는 1,000보다 큰 숫자의 덧셈을 할 줄 모릅니다. 동빈이를 위해서 두 숫자를 덧셈한 결과를 출력하는 프로그램을 만드세요. [입력조건] 두 숫자 A와 B가 공백을 기준으로 입력됩니다. (1,000 < A, B <= 1,000,000) [출력조건] 두 숫자의 합을 출력합니다. [입력예시 1] 2000 2000 [출력예시 1] 4000 [입력예시 2] 5938 19382 [출력예시 2]

25320


[풀이]

public static void main(String[] args) {
String input; //입력값 변수
int a;
int b;

System.out.println("1000이상의 두 정수 A B를 입력하세요. A B는 공백을 기준으로 입력됩니다.");
Scanner sc = new Scanner(System.in); //입력객체 생성
input = sc.nextLine(); //키보드 입력 문자열
String inputArr[] = input.split(" ");

a = Integer.parseInt(inputArr[0]);
b = Integer.parseInt(inputArr[1]);

System.out.println(a + b);
}

[5 문제내용] 피자집 사장인 현석이는 각각의 금액마다 쿠폰을 만들어 손님들이 현금으로 결제할 때 거스름돈 대신 쿠폰으로 거슬러 주었습니다. 하지만 최근 누군가 쿠폰을 복사해서 사용한다는 소문을 들은 현석이는 손님들에게 최대한 쿠폰의 개수를 적게 해서 거슬러주려고 합니다. 거슬러주어야 하는 금액을 입력 받아 현석이가 손님에게 줄 수 있는 쿠폰의 개수의 최솟값을 출력하세요. (쿠폰은 화폐 단위와 동일하게 10원, 50원, 100원, 500원, 1000원, 5000원, 10000원, 50000원짜리가 있습니다.) [입력조건] 거슬러주어야 하는 금액 N이 입력됩니다. (1 <= N <= 1,000,000) [출력조건] 쿠폰의 개수의 최솟값을 출력합니다. [입력예시 1] 5630 [출력예시 1] 6 [입력예시 2] 102830 [출력예시 2] 11


[풀이]
public static void main(String[] args) {
int n; //입력값 변수
int num = 0; //출력값(쿠폰의 개수의 최솟값)

int[] couponArr = new int[]{50000, 10000, 5000, 1000, 500, 100, 50, 10};

System.out.println("거슬러주어야 하는 금액 N을 입력하세요.");
Scanner sc = new Scanner(System.in); //입력객체 생성

n = sc.nextInt(); //키보드 입력 정수값
int mok;
int remain = n; //쿠폰으로 거슬러주고 난 나머지 금액

for(int i=0; i < couponArr.length; i++) {
if(remain > 0) {
mok = (remain / couponArr[i]);
remain = (n % couponArr[i]);
num += mok;
}
}
System.out.println(num);
}