24264번: 알고리즘 수업 - 알고리즘의 수행 시간 3

오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시

www.acmicpc.net

 

Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        long n = Integer.parseInt(br.readLine());
        
        long result = (long) Math.pow(n, 2);
        
        bw.write(result + "\n" + 2);
        
        bw.flush();
        bw.close();
    }
}
 
 
 

이중 반복문에서 반복 횟수가 각각 n번씩이므로 수행횟수는 n*n

이 때, n의 범위가 500,000까지이므로 int로 선언할 경우 범위를 넘어서는 overflow가 발생하므로 long으로 선

 

 

 

소스 코드
🔗 HJ0216/TIL/BOJ

 

참고 자료

 

gayeong39 (KwonGayeong) - velog

백준 25192 인사성 밝은 곰곰이 [JAVA] 첫번째 줄에는 채팅방 기록 수 N을 입력받고, N개 만큼 채팅기록자의 닉네임을 입력받아 처음들어와서 곰곰이모티콘을 쓴 횟수를 출력하면 된다.단, ENTER후에

velog.io

 

 

2738번: 행렬 덧셈

첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같

www.acmicpc.net

 

Language: Java

 

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int row = Integer.parseInt(st.nextToken());
        int col = Integer.parseInt(st.nextToken());
        
        int[][] intArr1 = new int[row][col];
        for(int i=0; i<row; i++) {
            StringTokenizer stInner = new StringTokenizer(br.readLine(), " ");
            for(int j=0; j<col; j++) {
                intArr1[i][j] += Integer.parseInt(stInner.nextToken());
            }
        }
 
        int[][] intArr2 = new int[row][col];
        for(int i=0; i<row; i++) {
            StringTokenizer stInner = new StringTokenizer(br.readLine(), " ");
            for(int j=0; j<col; j++) {
                intArr1[i][j] += Integer.parseInt(stInner.nextToken());
            }
        }
        
        int[][] sumArr = new int[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                sumArr[i][j] = intArr1[i][j] + intArr2[i][j];
            }
        }
 
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                bw.write(sumArr[i][j] + " ");
            }
            bw.newLine();
        }
        
        
        bw.flush();
        bw.close();
    }
}
 
 
 

 

 

 

소스 코드
🔗 HJ0216/TIL/BOJ

 

 

15894번: 수학은 체육과목 입니다

성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서

www.acmicpc.net

 

Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        long n = Long.parseLong(br.readLine());
 
        bw.write((4*n) + "");
        bw.flush();
        bw.close();
 
    }
}
 
 
cs

🚨 입력값의 범위가  (1 ≤ n ≤ 10^9)이므로 type은 int가 아닌 long 선언

 

 

 

소스 코드
🔗 HJ0216/TIL/BOJ

 

 

9063번: 대지

첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. 

www.acmicpc.net

 

Language: Java

 

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
36
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int n = Integer.parseInt(br.readLine());
 
        int maxA = -10000;
        int minA = 10000;
        int maxB = -10000;
        int minB = 10000;
        for(int i=0; i<n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int a = Integer.parseInt(st.nextToken());
            if(a>maxA) {maxA=a;}
            if(a<minA) {minA=a;}
            int b = Integer.parseInt(st.nextToken());
            if(b>maxB) {maxB=b;}
            if(b<minB) {minB=b;}            
        }
        
        bw.write((maxA-minA)*(maxB-minB)+"");
                
        bw.flush();
        bw.close();
 
    }
}
 
 
cs

 

 

 

소스 코드
🔗 HJ0216/TIL/BOJ

 

 

2903번: 중앙 이동 알고리즘

상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.

www.acmicpc.net

 

Language: Java

 

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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int totalDot = Integer.parseInt(br.readLine());
        
        int total = 2;
        int mul = 0;
        for(int i=0; i<totalDot; i++) {
            total = total + (total-1);
            mul = total*total;
        }
        bw.write(mul + "");
        
        bw.flush();
        bw.close();
 
    }
}
 
 
cs

 

 

 

소스 코드
🔗 HJ0216/TIL/BOJ