寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: C++とJavaによる数字の仕分け

奇数を小さい順に出力する問題と、その提出コードの解答例です。
paizaラーニングのレベルアップ問題集「戦セット」からの出典です。
paiza.jp
・問題
 あなたは奇数が大好きな山田さんと数字の仕分けをすることになりました。
 仕分けをする数字が与えられますので、奇数であるものを小さい順に出力してください。

・入力される値:入力は以下のフォーマットで与えられます。
   n (数字の総数)
   a_1
   a_2
   a_3
   ...
   a_i
   ...
   a_n
 1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。
 入力値最終行の末尾に改行が1つ入ります。
 文字列は標準入力から渡されます。

・期待する出力
 入力された正の整数a_iから奇数であるものを改行区切りで出力してください。
 出力する順番は、小さい数字から出力します。
 最後は改行し、余計な文字、空行を含んではいけません。

・条件
 すべてのテストケースにおいて、以下の条件をみたします。
   1≦n≦1,000
   1<=i<=nについて、1<=a_i<=10000

僕が作成、提出したコードは、以下のとおりです。

/*
奇数を小さい順に出力する問題
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(void){
    int n,a;
    cin>>n;
    vector<int> odd;
    for(int i=0;i<n;i++){
        cin>>a;
        if(a%2!=0){
            odd.push_back(a);
        }
    }
    sort(odd.begin(),odd.end());
    for(int i=0;i<odd.size();i++){
        printf("%d\n",odd[i]);
    }
    return 0;
}
/*
奇数を小さい順に出力する問題
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String Num = sc.nextLine();
        int num = Integer.parseInt(Num);
        
        ArrayList list = new ArrayList();
        for(int i = 0; i < num; i++){
            int n = sc.nextInt();
            if(n % 2 != 0){
                list.add(n);
            }
        }
        
        Collections.sort(list); 
        
        for(int a = 0; a < list.size(); a++){
            System.out.println(list.get(a));
        }
    }
}

paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。