본문 바로가기
[백준]

[BaekJoon/백준] 2920번 C++/JAVA

by Hevton 2021. 3. 19.
반응형

음계

 

숫자배열이 오름차순과 내림차순, 또는 둘 다 아닌지 판단한다.

 

오늘부터 기존 C언어 중심적인 풀이에서 C++ / JAVA 류의 언어로 넘어가기로했다.

 

C언어로만 꽤 오래 잡고있었다 보니, C++과 JAVA로 작성해나감에 있어서 문법상 정말 많은 시간 버벅댔다.

#include <iostream>
using namespace std;

int main() {
    int arr[8];
    int i;
    
    cin >> arr[0] >> arr[1];
    bool asc = (arr[0] < arr[1])?1:0;
    
    for(i = 2; i < 8; i++) {
        cin >> arr[i];
        
        if(asc) {
            if(arr[i - 1] >= arr[i])
                break;
        } else {
            if(arr[i - 1] <= arr[i])
                break;
        }
    }
    if(i != 8)
        cout << "mixed";
    else {
        string s = (asc)?"ascending":"descending";
        cout << s;
    }
    
}

C++로 푼 풀이이고, JAVA로 풀 때에는 다른 사람들의 풀이법을 참고해서 풀어보았다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class baekjoon  {
    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 stk;
        int as = 0, ds = 0;

        stk = new StringTokenizer(br.readLine());


        int arr[] = new int[8];

        for(int i = 0; i < 8; i++) {

            arr[i] = Integer.parseInt(stk.nextToken());

            if(i + 1 == arr[i])
                as++;
            else if(8 - i == arr[i])
                ds++;
        }
        if(as == 8)
            System.out.println("ascending");
        else if(ds == 8)
            System.out.println("descending");
        else
            System.out.println("mixed");
    }
}

확실히 C++보다 JAVA가 코드가 길고, 설정해줘야 하는 부분들도 많아서

문제풀이에 있어서는 C++이 조금 편한 것 같다.

반응형