0311 스키마에듀 백준 3문제 (브론즈 1 + 실버 2)

2023. 3. 8. 12:01스키마에듀 c언어 수업

728x90

https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

 

#include <stdio.h>

int main(void) {
  long long int s, sum;
  int n = 1;
  scanf("%lld", &s);

  while(1){
    sum += n;
    if(sum > s){
      n--;
      break;
    }
    n++;
  }
  printf("%d", n);
  return 0;
}

 

 

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

#include <stdio.h>

int main(void) {
  int n, i, input;
  int min=1000000, max =-1000000;

  scanf("%d", &n);

  for(i=0; i<n;i++){
    scanf("%d", &input);
    if(input < min){
      min = input;
    }
    if(input > max){
      max = input;
    }
  }

  printf("%d %d", min, max);
  
}

 

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net

 

#include <stdio.h>

int main(void) {

  char arr[1000000];
  int i = 0, zero = 0, one = 0;
  // zero: 연속된 0이 몇묶음 있는지
  // one: 연속된 1이 몇묶음 있는지

  // 0과 1로 이루어진 문자열 입력받기
  while (1) {
    scanf("%c", &arr[i]);
    if (arr[i++] == '\n')
      break;
  }

  //연속된 0과 1이 각각 몇묶음 있는지 구하는 부분
  int j = 0;

  while (1) {

    if (arr[j] == '0') { // 0으로 시작할 경우
      while (arr[j + 1] == '0') {
        j++;
      }
      zero++;
      j++;

    } else { // 1로 시작할 경우
      while (arr[j + 1] == '1') {
          j++;
        }
      one++;
      j++;
    }

    if(arr[j]=='\n'){
      break;
    }
  }
  //zero와 one 중 작은 것을 출력
  int result = (one > zero) ? zero : one;
  printf("%d", result);
  
}