티스토리 뷰
1089.
시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때 n번째 수를 출력하는 프로그램을 만들어보자.
입력. 1 3 5
출력. 13
#include <stdio.h>
int main(void)
{
int a, d, n, sum=0;
scanf("%d %d %d", &a, &d, &n);
for(int i=1; i<n; i++){
sum=a+(d*i);
}
printf("%d\n", sum);
return 0;
}
1090.
시작 값(a), 등비의 값(r), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.(모두 0 ~ 10)
n번째 수를 출력한다.
입력. 3 5
출력. 1
#include <stdio.h>
int main(void)
{
long a, d, n;
scanf("%ld %ld %ld", &a, &d, &n);
for(int i=1; i<n; i++){
a*=d;
}
printf("%ld\n", a);
return 0;
}
1091.
시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.(a, m, d는 -50 ~ +50, n은 10이하의 자연수) n번째 수를 출력한다.
입력. 1 -2 1 8
출력. -85
#include <stdio.h>
int main(void)
{
long a, m, d, n;
scanf("%ld %ld %ld %ld", &a, &m, &d, &n);
long result=a;
for(int i=1; i<n; i++){
a*=m;
a+=d;
}
printf("%ld\n", a);
return 0;
}
1092.
같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는, 방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.) 3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후)을 출력한다.
입력. 3 7 9
출력. 63
#include <stdio.h>
int main(void)
{
int day1, day2, day3;
scanf("%d %d %d", &day1, &day2, &day3);
int i=1;
while(i!=0){
if(i%day1==0 && i%day2==0 && i%day3==0){
printf("%d", i);
break;
}
i++;
}
return 0;
}
1093.
첫 번째 줄에 출석 번호를 부른 횟수인 정수 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
#include <stdio.h>
int main(void)
{
int cnt, n=0;
int arr[23]={0, };
scanf("%d", &cnt);
for(int i=0; i<cnt; i++){
scanf("%d", &n);
arr[n-1]++;
}
for(int i=0; i<23; i++){
printf("%d ",arr[i]);
}
return 0;
}
1094.
번호를 부른 횟수(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
#include <stdio.h>
int main(void)
{
int n, arr[10000];
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
}
for(int i=n-1; i>=0; i--){
printf("%d ", arr[i]);
}
return 0;
}
1095.
번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다. n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다. 출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다.
입력.
10
10 4 2 3 6 6 7 9 8 5
출력.
2
#include <stdio.h>
int main(void)
{
int n, arr[10000];
int min = 23; //입력 범위내에 가장 큰 값 23을 최초의 기준으로 삼음
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
}
for(int i=0; i<n; i++){
if(min>arr[i]) {min=arr[i];}
}
printf("%d",min);
return 0;
}
1096.
바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때, n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.
바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다.
둘째 줄 부터 n+1 번째 줄까지 흰 돌을 놓을 좌표(x, y)가 n줄 입력된다.
n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력되지 않는다.
흰 돌이 올려진 바둑판의 상황을 출력한다. 흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다.
📌 입출력 예시는 하단 참고
#include <stdio.h>
int main(void)
{
int cnt, n1, n2;
int arr[19][19]={0, };
scanf("%d", &cnt);
for(int i=0; i<cnt; i++){
scanf("%d %d", &n1, &n2);
if(arr[n1-1][n2-1]!=1){
arr[n1-1][n2-1]=1;
}
}
for(int i=0; i<19; i++){
for(int j=0; j<19; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
1097.
바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다. 십자 뒤집기 횟수(n)가 입력된다.
십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다. 십자 뒤집기 결과를 출력한다.
십자 뒤집기란, 입력받은 좌표의 행과 열에 해당하는 값이 0이라면 1로, 1이라면 0으로 뒤집는 과정.
입력받은 좌표가 만약 1이라면, 행이 뒤집힐 때 0으로 변하고 열이 뒤집힐 때 다시 1로 변하므로 변화가 없다.
📌 입출력 예시는 하단 참고
#include <stdio.h>
int main(void)
{
int cnt, n1, n2;
const int SIZE = 19;
int arr[SIZE][SIZE];
//바둑판 상황 입력
for(int i=0; i<SIZE; i++){
for(int j=0; j<SIZE; j++){
scanf("%d ", &arr[i][j]);
}
}
//십자뒤집기 횟수와 좌표 입력
scanf("%d", &cnt);
for(int i=0; i<cnt; i++){
scanf("%d %d", &n1, &n2);
for(int j=0; j<SIZE; j++){
//행 좌표 변경
if(arr[n1-1][j]==1){arr[n1-1][j]=0;}
else{arr[n1-1][j]=1;}
//열 좌표 변경
if(arr[j][n2-1]==1){arr[j][n2-1]=0;}
else{arr[j][n2-1]=1;}
}
}
//십자뒤집기 실행 후 바둑판 출력
for(int i=0; i<SIZE; i++){
for(int j=0; j<SIZE; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
1098.
첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고, 두 번째 줄에 놓을 수 있는 막대의 개수(n)
세 번째 줄부터 각 막대의 길이(l), 방향(d:가로는 0, 세로는 1), 좌표(x, y)가 입력된다.
입력값의 정의역은 다음과 같다.
1 <= w, h <= 100
1 <= n <= 10
d = 0 or 1
1 <= x <= 100-h
1 <= y <= 100-w
📌 입출력 예시는 하단 참고
#include <stdio.h>
int main(void)
{
int w, h, n, l, d, x, y;
// w:가로 h:세로 n:막대 개수
// l:막대 길이 d:방향(0가로,1세로) x,y:좌표
int arr[100][100]={0, };
// 격자판 배열 생성 : 배열의 값을 모두 0으로 초기화
scanf("%d %d", &h, &w); //격자판 크기 입력
scanf("%d", &n); //막대 개수 입력
// 격자판 배열 초기화 : n번 입력받을 것
for(int i=0; i<n; i++){
scanf("%d %d %d %d", &l, &d, &x, &y); //길이(l), 방향(d), 좌표(x,y) 순으로 입력
if(d==0){
//d가 0이면 좌표(x,y)에 *가로*로 길이가 2인 막대 위치
for(int j=0; j<l; j++){
//값을 1로 초기화 하는 과정이 l(막대길이)만큼 반복 필요
//행의 위치는 고정되며, 열의 위치를 i씩 증가해 1로 초기화
arr[x-1][y-1+j] = 1;
}
}else{
//d가 0이면 좌표(x,y)에 *세로*로 길이가 2인 막대 위치
for(int j=0; j<l; j++){
//마찬가지로 값을 1로 초기화 하는 과정이 l(막대길이)만큼 반복 필요
//열의 위치는 고정되며, 행의 위치를 i씩 증가해 1로 초기화
arr[x-1+j][y-1] = 1;
}
}
}
// 격자판 출력
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
printf("%d ",arr[i][j] );
}printf("\n");
}
return 0;
}
1099.
개미집은 항상 좌표(2,2)에 존재하므로, 개미는 (2,2)에서 출발한다.
개미집의 크기는 항상 10*10 으로 동일하다.
1. 오른쪽(→) 으로 이동하다 벽을 만나면 아래(↓)로 이동
2. 미로상자의 구조
✔ 0 : 갈 수 있는 곳
✔ 1 : 벽 또는 장애물
✔ 2 : 먹이
3. 먹이를 찾거나 더이상 움직일 수 없을 때까지 오른쪽이나 아래로 이동
4. 아래의 경우에는 더이상 이동하지 않고 그 자리에 머무른다
✔ 맨 아래의 가장 오른쪽에 도착한 경우
✔ 더 이상 움직일 수 없는 경우
✔ 먹이를 찾은 경우
5. 이동 경로는 9로 표시한다
📌 입출력 예시는 하단 참고
#include <stdio.h>
int main(void)
{
int arr[11][11]={0, }; //미로 상자 배열 초기화
//미로 상자 구조 입력
for(int i=1; i<11; i++){
for(int j=1; j<11; j++){
scanf("%d",&arr[i][j]);
}
}
//미로 상자 이동 경로 초기화
int n=0;
//조건식이 i,j<8 인 이유는, 개비집의 테두리는 모두 벽(1)이고
//배열의 크기를 벗어지 않도록 하기위함
for(int i=0; i<8; i++){
for(int j=n; j<8; j++){
if(arr[2+i][2+j]==0){
//j의 값은 고정되어야 하므로 n에 j값 저장해 초기식으로 활용
arr[2+i][2+j]=9;
n=j;
continue;
}else if(arr[2+i][2+j]==1){
//오른쪽 칸이 1인 경우 아래로 이동해 확인해야하므로
//행의 이동을 위해 break문을 사용, i증감식으로 이동
//j의 값은 고정되어야 하므로 n에 j-1값 저장해 초기식으로 활용
//j-1인 이유는 현 위치가 1이므로 한 칸 왼쪽으로 가서 진행해야하기때문
n=j-1;
break;
}else if(arr[2+i][2+j]==2 ){
//먹이를 발견한 경우 해당 좌표를 9로 변경하고 프로그램 종료
//break문을 사용해 중첩for문을 빠져나갈 수 없으니 goto문 사용
arr[2+i][2+j]=9;
goto print;
}
}
}
print :
for(int i=1; i<11; i++){
for(int j=1; j<11; j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
'Computer Science > 코드업' 카테고리의 다른 글
[코드업 기초 100제-C언어] 완료🎉🎉 (0) | 2021.02.19 |
---|---|
[코드업 기초 100제-C언어] 1078-1088 (0) | 2021.02.19 |
[코드업 기초 100제-C언어] 1071-1077 (0) | 2021.02.19 |
[코드업 기초 100제-C언어] 1059-1070 (0) | 2021.02.19 |
[코드업 기초 100제-C언어] 1053-1058 (0) | 2021.02.14 |