상세 컨텐츠

본문 제목

[백준]BOJ_브론즈2_2920번 음계 - C/C++

알고리즘/C++

by 셉인 2022. 9. 24. 06:44

본문

728x90

1~8 차례대로면 ascending

8~1 차례대로면 descending

섞여있으면 mixed

#include <stdio.h>

int main() {
	int arr[10]={1,2,3,4,5,6,7,8};
	int dearr[10]={8,7,6,5,4,3,2,1};
	int num[10]={0};
	for(int i=0; i<8;i++){
	scanf("%d ",&num[i]);
	}
	for(int j=0; j<8; j++)
    {if(arr[j]==num[j])
	{
		printf("ascending");
	}
	else if(dearr[j]==num[j]){
		printf("descending");
	}
	else{
		printf("mixed");
	}}
	return 0;
}

틀린 코드 

처음에 C로 구현했었는데 단순히 배열중 한 부분이 같으면 같은 배열이라고 하게 만들었다.

여기서 틀린것 같다. arr[1]==num[1]이 같아도 arr[2]!=num[2]이 될 수도 있다.

#include <bits/stdc++.h>
using namespace std;

int arr[8]={0};
int asc=0,des=0;

int main(){
    ios_base::sync_with_stdio(false); 
cin.tie(nullptr); 
cout.tie(nullptr);
    for(int i=0; i<8; i++) 
	{cin >> arr[i];}
for(int j=0; j<8; j++){
if(arr[j]==j+1){
asc++;}
else if(arr[j]==8-j){
des++;}}
if(asc==8){
cout<<"ascending";}
else if(des==8){
cout<<"descending";}
else{
cout<<"mixed";}

return 0;
	
}

정답 코드 해석

1) asc와 des라는 변수를 생성해줬다.

2) for문으로 배열을 받아주었고

3) 새로운 for문으로 배열arr[0]일때 값이 1이면 asc를 증가시키고 값이 8이면 des를 증가시키도록 했다.

4) 이러한 방법으로 8번 돌면 asc와 des의 합이 8일 것이다.

5) asc의 값이 8이면 ascending을 des의 값이 8이면 descening을 둘다 8이 아니면 mixed를 출력하도록 해주었다.

 

**C언어도 같은 방식으로 구현 가능할 것이다.

2920번: 음계 (acmicpc.net)

 

728x90

관련글 더보기

댓글 영역