본문으로 바로가기

for 문을 잘 활용하여 문제를 해결할 수 있다.

2741: N 찍기

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    printf("%d\n", i);
  }
  return 0;
}

2742: 기찍 N

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=n; i>=1; i--) {
    printf("%d\n", i);
  }
  return 0;
}

2738: 구구단

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=9; i++) {
    printf("%d * %d = %d\n", n, i, (n*i));
  }
}

2438: 별찍기 - 1

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    for (int j=1; j<=i; j++) {
      printf("*");
    }
    printf("\n");
  }
}

2439: 별찍기 - 2

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    for (int j=i; j<n; j++) {
      printf(" ");
    }
    for (int j=1; j<=i; j++) {
      printf("*");
    }
    printf("\n");
  }
}

2440: 별찍기 - 3

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    for (int j=i; j<=n; j++) {
      printf("*");
    }
    printf("\n");
  }
}

2441: 별찍기 - 4

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    for (int j=1; j<i; j++) {
      printf(" ");
    }
    for (int j=i; j<=n; j++) {
      printf("*");
    }
    printf("\n");
  }
}

1924: 2007년

#include <cstdio>

const int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const char weekday[7][4] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};

int main() {
  int x, y;
  scanf("%d %d", &x, &y);
  
  // 1월 1일부터 몇일이 지났는지 계산한다
  int day = y;
  for (int i=1; i<x; i++) {
    day += month[i-1];
  }
  
  printf("%s\n", weekday[day%7]);
  return 0;
}

1월 1일부터 몇일이 지났는지를 계산하여 총 지난 날을 구하고 7의 나머지로 요일을 계산하면 된다.

8393: 합

총 2가지 방법으로 문제를 접근하였는데 하나는 for 문을 사용하여 일반적인 반복문으로 문제를 해결하였고 다른 하나는 합의 공식을 이용하여 문제를 해결하였다.

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  
  int sum = 0;
  for (int i=1; i<=n; i++) {
    sum += i;
  }
  
  printf("%d\n", sum);
  return 0;
}
#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  printf("%d\n", (n*(n+1))/2);// 합의 공식을 이용 
  return 0;
}

11720: 숫자의 합

#include <cstdio>

int main() {
  int n;
  scanf("%d", &n);
  getchar();// \n 문자열을 받는다
  
  int sum = 0;
  for (int i=1; i<=n; i++) {
    int x = getchar() - '0';// 아스키 코드의 값을 이용하여 문자를 숫자로 변환
    sum += x;
  }
  
  printf("%d\n", sum);
  return 0;
}

숫자를 하나 하나의 문자라고 생각하고 문자를 받아 숫자로 치환하여 합을 구하였다. 문자를 숫자로 치환할 때 아스키 코드의 값을 이용하였는데, 예를 들어, 문자 7의 아스키 코드 값은 55이고 이를 숫자로 치환하기 위해서는 48 만큼의 수를 빼주면 된다. 이때, 당연하게도, 아스키 코드 값의 48에 해당하는 문자가 0이므로 getchar() - '0'으로 문자를 숫자로 치환해줄 수 있다.

11721: 열 개씩 끊어 출력하기

#include <cstdio>
#include <cstring>

int main() {
  char str[100];
  scanf("%100[^\n]s", str);
  
  auto l = strlen(str);
  for (auto i=0; i<l; i++) {
    printf("%c", str[i]);
    
    // 10개씩 끊어 출력
    if (i % 10 == 9) {
      printf("\n");
    }
  }
  
  printf("\n");
  return 0;
}

댓글을 달아 주세요