[C] CodeUp 1090~1099번 문제풀이.
[1090] 수 나열하기 2
[입력] 시작 값(a), 등비의 값(r), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.(모두 0 ~ 10)
[출력] n번째 수를 출력한다.
[입력 예시] 2 3 7
[출력 예시] 1458
#include <stdio.h>
int main(void) {
long long int a = 0; // 시작 값
int r = 0; // 등비
int n = 0; // 정수
scanf("%lld %d %d", &a, &r, &n);
for (int i = 1; i < n; i++) {
a *= r;
}
printf("%lld", a);
}
[1091] 수 나열하기 3
[입력] 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.
(a, m, d는 -50 ~ +50, n은 10이하의 자연수)
[출력] n번째 수를 출력한다.
[입력 예시] 1 -2 1 8
[출력 예시] -85
#include <stdio.h>
int main(void) {
long long int a = 0; // 시작 값
int m = 0; // 곱할 값
int d = 0; // 더할 값
int n = 0; // 정수
scanf("%lld %d %d %d", &a, &m, &d, &n);
for (int i = 1; i < n; i++) {
a *= m;
a += d;
}
printf("%lld", a);
}
[1092] 함께 문제 푸는 날
[입력] 같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는,
방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.)
[출력] 3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?)을 출력한다.
[입력 예시] 3 7 9
[출력 예시] 63
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int day;
int a, b, c;
day = 1;
scanf("%d %d %d", &a, &b, &c);
while (day % a != 0 || day % b != 0 || day % c != 0) day++;
printf("%d", day);
return 0;
}
[1093] 이상한 출석 번호 부르기 1
[입력] 첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000)
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다.
[출력] 1번부터 번호가 불린 횟수를 순서대로 공백으로 구분하여 한 줄로 출력한다.
[입력 예시]
10
1 3 2 2 5 6 7 4 5 9
[출력 예시] 1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int nums[23] = { };
int num1 = 0, num2 = 0;
scanf("%d", &num1);
for (int i = 0; i < num1; i++) {
scanf("%d", &num2);
if (num2 == 0)continue;
nums[num2]++;
}
for (int i = 1; i <= 23; i++) {
printf("%d ", nums[i]);
}
return 0;
}
[1094] 이상한 출석 번호 부르기 2
[입력] 번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.
[출력] 출석을 부른 번호 순서를 바꾸어 공백을 두고 출력한다.
[입력 예시]
10
10 4 2 3 6 6 7 9 8 5
[출력 예시] 5 8 9 7 6 6 3 2 4 10
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int arr[10000] = {};
int num = 0;
scanf("%d", &num);
for (int i = 0; i < num; i++) {
scanf("%d", &arr[i]);
}
num -= 1;
for (; num >= 0; num--) {
printf("%d ", arr[num]);
}
return 0;
}
[1095] 이상한 출석 번호 부르기 3
[입력] 번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.
[출력] 출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다.
[입력 예시]
10
10 4 2 3 6 6 7 9 8 5
[출력 예시] 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int arr[10000] = {};
int num = 0;
scanf("%d", &num);
for (int i = 0; i < num; i++) {
scanf("%d", &arr[i]);
}
int temp = 24;
for (int i = 0;i<num;i++) {
if (temp > arr[i]) {
temp = arr[i];
}
}
printf("%d", temp);
return 0;
}
[1096] 바둑판에 흰 돌 놓기
[입력] 바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다.
둘째 줄 부터 n+1 번째 줄까지 힌 돌을 놓을 좌표(x, y)가 n줄 입력된다.
n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력되지 않는다.
[출력] 흰 돌이 올려진 바둑판의 상황을 출력한다.
흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다.
[입력 예시]
5
1 1
2 2
3 3
4 4
5 5
[출력 예시]
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int x = 0, y = 0;
int a[20][20] = {};
int n = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &x, &y);
a[x][y] = 1;
}
for (int i = 1; i <= 19; i++) {
for (int j = 1; j <= 19; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
[1097] 바둑알 십자 뒤집기
문제가 이해 안가서 못 풀었습니다 ㅠㅠ
[1098] 설탕과자 뽑기
[입력] 첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고,
두 번째 줄에 놓을 수 있는 막대의 개수(n)
세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다.
입력값의 정의역은 다음과 같다.
1 <= w, h <= 100
1 <= n <= 10
d = 0 or 1
1 <= x <= 100-h
1 <= y <= 100-w
[출력] 모든 막대를 놓은 격자판의 상태를 출력한다.
막대에 의해 가려진 경우 1, 아닌 경우 0으로 출력한다.
단, 각 숫자는 공백으로 구분하여 출력한다.
[입력 예시]
5 5
3
2 0 1 1
3 1 2 3
4 1 2 5
[출력 예시]
1 1 0 0 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 0 0 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int MAP[100][100] = {};
int w, h;
int n;
int l, d, x, y;
scanf("%d %d", &w, &h);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d %d %d", &l, &d, &x, &y);
if (d == 0) {
for (int j = 0; j < l; j++) {
MAP[x][y + j] = 1;
}
}
else {
for (int j = 0; j < l; j++) {
MAP[x + j][y] = 1;
}
}
}
for (int i = 1; i <= w; i++) {
for (int j = 1; j <= h; j++) {
printf("%d ", MAP[i][j]);
}
printf("\n");
}
return 0;
}
[1099] 성실한 개미
[입력] 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다.
[출력] 성실한 개미가 이동한 경로를 9로 표시해 출력한다.
[입력 예시]
1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 1
1 0 0 1 1 1 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 0 0 0 0 1 2 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
[출력 예시]
1 1 1 1 1 1 1 1 1 1
1 9 9 1 0 0 0 0 0 1
1 0 9 1 1 1 0 0 0 1
1 0 9 9 9 9 9 1 0 1
1 0 0 0 0 0 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int nums[10][10] = {};
int r = 1, d = 1;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
scanf("%d", &nums[i][j]);
}
}
while (1) {
if (nums[d][r] == 2) {
nums[d][r] = 9;
break;
}
nums[d][r] = 9;
if (nums[d][r + 1] == 0 || nums[d][r + 1] == 2) {
r++;
if (nums[d][r] == 0) {
nums[d][r] = 9;
}
else if (nums[d][r] == 2) {
nums[d][r] = 9;
break;
}
}
else if (nums[d + 1][r] == 0 || nums[d + 1][r] == 2) {
d++;
if (nums[d][r] == 0) {
nums[d][r] = 9;
}
else if (nums[d][r] == 2) {
nums[d][r] = 9;
break;
}
}
else break;
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%d ", nums[i][j]);
}
printf("\n");
}
return 0;
}
댓글남기기