반응형
음계
숫자배열이 오름차순과 내림차순, 또는 둘 다 아닌지 판단한다.
오늘부터 기존 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++이 조금 편한 것 같다.
반응형
'[백준]' 카테고리의 다른 글
[BaekJoon/백준] 1920번 C++ (0) | 2021.03.20 |
---|---|
[BaekJoon/백준] 1259번 C++/JAVA (0) | 2021.03.20 |
[BaekJoon/백준] 11444번 분할정복 (0) | 2021.03.19 |
[BaekJoon/백준] 10830번 분할정복 (0) | 2021.03.18 |
[BaekJoon/백준] 2740 분할정복이지만... (0) | 2021.03.17 |