-
백준 2947번 : 나무조각 (C 언어)c c++ 언어 공부 2023. 6. 1. 15:03
https://www.acmicpc.net/problem/2947
2947번: 나무 조각
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include <stdio.h>int main(){int arr[5] = { 0, };int temp = 0;int flag = 0;int count = 0;int state = 0;int check = 0;for (int i = 0; i < 5; i++){scanf("%d", &arr[i]);}while (1){count = 0;check = 0;if (state==0 && arr[0] > arr[1]){temp = arr[0];arr[0] = arr[1];arr[1] = temp;check = 1;}if (state == 1 && arr[1] > arr[2]){temp = arr[1];arr[1] = arr[2];arr[2] = temp;check = 1;}if (state == 2 && arr[2] > arr[3]){temp = arr[2];arr[2] = arr[3];arr[3] = temp;check = 1;}if (state == 3 && arr[3] > arr[4]){temp = arr[3];arr[3] = arr[4];arr[4] = temp;check = 1;}state++;if (check == 1){for (int i = 0; i < 5; i++){printf("%d ", arr[i]);if ((i + 1) == arr[i]){count++;}}printf("\n");}if (state == 5){state = 0;}if (count == 5){flag = 1;}if (flag == 1){break;}}}cs 문제풀이:
1. 각 단계별로 돌아야 하므로 state라는 변수를 설정하였다.
2. if조건문에 들어가면 check라는 변수를 1로 바꾸어 변화한 배열을 출력하였다.
3. 배열을 출력할 때 1,2,3,4,5가 들어오는지 count로 체크함
4. state가 5가되면 다시 0으로 바꾸고, count가 5가 되면 1,2,3,4,5가 들어온것이므로 flag를 1로 flag가 1이면 break를 해주었다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 2851번 : 슈퍼 마리오(C 언어) (0) 2023.06.02 백준 1094번 : 막대기 (C 언어) (0) 2023.06.01 백준 10718번 : We love kriii (C 언어) (1) 2023.05.16 백준 1075번 : 나누기 (C 언어) (0) 2023.05.14 백준 1076번 : 저항 (C 언어) (2) 2023.05.14