뻠삥

문제 : https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

주어진 숫자들 중 최대값 및 최소값을 구하는 문제입니다.

값들을 배열에 담고 간단한 반복문과 조건문을 이용해 풀었습니다.

 

이 문제를 풀면서 파이썬으로 for 문을 한 줄로 쓰는 방법을 배웠어요.

파이썬의 매력은 숏코딩이라고 하는데, 공부해봐야겠습니다.

 

문제 풀이는 아래와 같습니다.

 

1. 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
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 cntLoop = Integer.parseInt(br.readLine());
        String[] strNums = br.readLine().split(" "-1);
        int[] nums = new int[strNums.length];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = Integer.parseInt(strNums[i]);
        }
        
        int max = nums[0];
        int min = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
            }
            else if (nums[i] < min) {
                min = nums[i];
            }
        }
        bw.write(min + " " + max + "\n");
        
        bw.close();
        br.close();
    }
}
cs

 

2. Python 3

1
2
3
4
5
6
7
8
9
10
11
12
import sys
 
if __name__ == '__main__':
    cntLoop = int(sys.stdin.readline())
    nums = [int(num) for num in sys.stdin.readline().split(' '-1)]
    numMax = numMin = nums[0]
    for i in range(1, cntLoop):
        if nums[i] > numMax:
            numMax = nums[i]
        elif nums[i] < numMin:
            numMin = nums[i]
    print(str(numMin) + ' ' + str(numMax))
cs