IT's 우

[Do it! 코딩 테스트-기초편]03-1 배열과 리스트, 03-2 구간 합 본문

알고리즘/백준

[Do it! 코딩 테스트-기초편]03-1 배열과 리스트, 03-2 구간 합

디우 2022. 7. 4. 23:52
728x90

 

03-1 배열과 리스트

백준 11720 숫자의 합

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

 

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //숫자의 개수
        int N=sc.nextInt();
        
        // 입력값 String 변수 input에 저장한 후 char[] 형 변수로 변환(toCharArray() 사용)
        String input=sc.next();
        char[] numArray=input.toCharArray();
        // numArray 합
        int result =0;
        for(int i=0; i<numArray.length;i++) {
            result+=numArray[i]-'0';//char->int 변환 -'0'
        }
        
        System.out.println(result);
        
        
    }
 
}
 
cs
String형으로 입력받아 char[]형으로 변환

 

백준 1546번 평균

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.

 

출력

첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //과목 개수 입력받기
        int N=sc.nextInt();
        int max=0;    // 성적 최댓값
        int sum=0;
        //점수 입력
        int[] scores=new int[N];
        for(int i=0; i<N;i++) {
            scores[i]=sc.nextInt();
            if(scores[i]>=max) max=scores[i];
            sum+=scores[i];
 
        }
        //출력
        System.out.println((float)sum/max*100/N);
    }
}
 
cs

 

 

03-2 구간 합

백준 11659번 구간 합 구하기 4

수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.

출력

총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.

총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        
        int N=Integer.parseInt(st.nextToken());
        int M=Integer.parseInt(st.nextToken());
        
        //구간 합 구하기
        int[] Sum=new int[N];
        st=new StringTokenizer(br.readLine());
        for(int i=0; i<N;i++) {
            if(i==0) {
                Sum[i]+=Integer.parseInt(st.nextToken());
            }else {
                Sum[i]=Sum[i-1]+Integer.parseInt(st.nextToken());
            }
            
        }
        
        //i 번쨰 수에서 j 번째 수까지의 합 -> Sum[j]-Sum[i-1]
        for(int a=0; a<M; a++) {
            st=new StringTokenizer(br.readLine());
            int i=Integer.parseInt(st.nextToken());
            int j=Integer.parseInt(st.nextToken());
            if(i==1) {
                System.out.println(Sum[j-1]);
            }else {
                System.out.println(Sum[j-1]-Sum[i-2]);
            }    
        }        
    }
}
cs

 

 배열 i 번째 수에서 j 번째 수까지의 합 -> Sum[j]-Sum[i-1]

 

 

백준 11660번 구간 합 구하기2

 

N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.

예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.

1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.

표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.

입력

첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 개의 정수 x1, y1, x2, y2 가 주어지며, (x1, y1)부터 (x2, y2)의 합을 구해 출력해야 한다. 표에 채워져 있는 수는 1,000보다 작거나 같은 자연수이다. (x1 ≤ x2, y1 ≤ y2)

출력

총 M줄에 걸쳐 (x1, y1)부터 (x2, y2)까지 합을 구해 출력한다.

 

 

 

 

 

 

 

출처 백준 https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

728x90
반응형