본문 바로가기

Codeup

Java) codeup 1272 : 기부

1272 : 기부 해결

시간 제한: 1 Sec  메모리 제한: 128 MB

제출: 12426  해결 문제 수: 6203

소스 제출 채점 상황 게시판

문제 분류 : 보기

문제 설명    내 문제집에 추가 풀이1(C/C++) 내소스1

근제는 대기업 CSH의 회장이다.

최근 기업의 이미지가 좋지 않아 근제는 가난한 사람들에게 기부를 하려고 한다.

그런데 근제는 특이한 방법으로 기부를 했는데, 기부할 사람들을 번호 순으로 일정한 규칙에 따라 돈을 준다고 한다.

규칙은 다음과 같다

1, 10, 2, 20, 3, 30, 4, 40, 5, 50, 6, 60, 7, 70, 8, 80, 9, 90, 10, 100, 11, 110, 12, 120, ...

한편, 가난한 존과 밥은 돈을 받기 위해 신청을 했다.

존의 번호(k), 밥의 번호(h)가 주어질때 존과 밥이 받는 기부금의 합을 구하시오.

입력

한 줄에 k, h가 공백으로 분리되어 순서대로 입력된다.

출력

존과 밥이 받는 금액의 합을 출력한다.

입력 예시   예시 복사

1 2

출력 예시

11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
public class Main {
 
    public static void main(String[] args) {
        int[] arr = new int[10000000];
        int cnt = 1;
        for(int i =1;i<10000000;i = i+2) {
            arr[i] = cnt++;
        }
        cnt = 10;
        for(int i =2;i<10000000;i = i+2) {
            arr[i] = cnt;
            cnt += 10;
        }
        int a, b;
        Scanner sc = new Scanner(System.in);
        a = sc.nextInt();
        b = sc.nextInt();
        System.out.printf("%d", arr[a] + arr[b]);
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

문제 해결 방법 : 이 문제는 범위가 안 주어져서 당황한 문제이다. 그래서 범위를 1000정도 배열을 잡아서 해결 하려 했으나 배열 크기로 인하여 실패하였다. 그래서 두번째로 배열의 크기를 매우 늘려서 시도하였다. 해결하였다.

먼저 배열을 채워야 한다. 보통이라면 나는 배열을 0부터 시작하지만 이러한 문제는 1부터 시작하는것이 문제에 접근하기가 쉬워진다. 규칙을 2가지로 나눠서 홀수의 인덱스 번호일 때는 1씩 더해주고 짝수의 인덱스 번호일때는 10씩 더해주면 쉽게 해결 할 수 있는 문제이다.