https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
풀이
배열을 처음에 크게 준 다음에 처음에 카드의 장 수(n)만큼 배열의 첫 번째부터 넣어줬습니다.
그 다음에 for문을 사용해 짝수 번째에 있는 카드를 순서대로 맨 처음 생성된 배열의 뒤에 빈 공간에다가 채워줬습니다.
만약 다음 배열이 비어있다면 마지막 배열인 것으로,
for문에 if를 넣어줘서 마지막 배열이라면 출력해주도록 했습니다.
그리고 n = 1 일 땐
arr[0] 에 1이 채워져 있는데
for문이 arr[1] 부터 확인을 해줘서 예외가 뜨기 때문에
맨 마지막에 예외를 넣어줬습니다.
#include <stdio.h>
int main(void) {
int arr[2000000] = {};
int n, a = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++) {
arr[i] = i + 1;
}
for (int i = 1; i < 1000000; i++) {
arr[n + a] = arr[i];
i++;
a++;
if(arr[i + 1] == 0 && arr[i] != 0) {
printf("%d", arr[i]); //마지막 숫자가 맞는지 확인하기
}
}
if (n == 1)
printf("1");
return 0;
}
근데 다른 분들 푸신 방법 보니까 큐라는 제가 모르는 걸 사용해서 푸시던데, 이렇게 풀면 안 되는 건가요?
제 방법으로는 쉽다고 느껴서 10분 정도만에 푼 것 같은데...
'백준' 카테고리의 다른 글
[C언어] 백준 | 24228번 젓가락 (0) | 2022.04.01 |
---|---|
[C언어] 백준 | 11057번 오르막 수 (0) | 2022.03.31 |
[C언어] 백준 | 11720번 숫자의 합 (0) | 2022.03.30 |
[C언어] 백준 | 4375번 1 (0) | 2022.03.29 |
[C언어] 백준 | 1051번 숫자 정사각형 (0) | 2022.03.27 |