1 분 소요

사용 언어: Python3, Java

문제

수학숙제

풀이

나의 풀이

파이썬

N = int(input())
lst = [input() for _ in range(N)]

numbers = []
for val in lst:
    tmp = ''
    for x in val:
        if x.isdecimal():
            tmp += x
        else:
            if tmp:
                numbers.append(int(tmp))
                tmp = ''
    if tmp:
        numbers.append(int(tmp))

print(*sorted(numbers), sep='\n')
  • 테스트 케이스: 성공
  • 제출 결과: 성공
  • print(*): 리스트 원소나 문자열 각각의 문자를 한 칸 씩 띄워 출력한다.
    ans = [1, 2, 3]
    print(*ans) # 1 2 3
    

다른 풀이

자바

참고

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(in.readLine());
        String numbers[]; // "입력 한 줄"애서 "숫자"만 뽑은 배열 (숫자가 아닌걸로 split 할 예정)
        ArrayList<BigInteger> arr = new ArrayList<>();

        for (int i=0; i<n; i++) {
            //문자열 "3a9d"의 경우 아래 식을 거치고 나면 "3", "", "9", "" 이 된다. 
            numbers = in.readLine().split("\\D"); // \D: 숫자가 아닌 것들 [^0-9]와 같음
            for (int j=0; j<numbers.length; j++) {
                if (!numbers[j].equals("")) {
                    arr.add(new BigInteger(numbers[j]));
                }
            }
        }
        arr.sort(null); // 오름차순 정렬

        for (int i=0; i<arr.size(); i++) {
            out.write(arr.get(i) + "\n"); // 버퍼에 쓰기
        }

        out.close(); // 버퍼 출력 후 출력스트림 닫기
        in.close(); // 입력스트림 닫기
    }
}
  • 테스트 케이스: 성공
  • 제출 결과: 성공
  • 위 코드에서 확인 가능한 또 다른 포인트는 바로 numbers[] 배열에 담긴 문자열을 BigInteger를 이용해서 어레이 리스트에 저장했다는 것이다.
    • 숫자가 100자리 들어올 수 있기 때문에 그 어떤 정수 자료형으론 표현할 수 없어서 문자열을 이용해 빅 인티저에 담은 것이다.
    • (p.s. 파이썬에선 그냥 int로 때려박아도 된다.)
  • sort()의 매개변수로는 null 또는 Comparator()가 들어갈 수 있으며(람다 가능), null이면 디폴트로 비 내림차순 정렬을 해준다.


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기