본문 바로가기

C언어

2025년 여름학기 4주차 C언어

#include  <stdio.h>
#include <string.h>

int main(){
    char line[51];
    int x[26] = {0};
    int len, odd = 0;
    char mid = 0;


scanf("%s", line);
len = strlen(line);

//사전식 배열을 만들기 위한 밑작업이다. 사전 순서대로 각 알파벳이 몇 번 들어가있는지 센다. 
for (int i =0; i<len; i++){
    x[line[i]-'A']++;
}


//홀수만 있는 숫자가 있는지 확인한다
for(int i =0; i<26; i++){
    if(x[i]%2==1){
        odd++;
        mid = i + 'A';
    }
}

//펠린드롬을 만들기가 불가능한 경우다
if (odd > 1) {
        printf("I'm Sorry Hansoo\n");
        return 0;
    }


//사전순서대로 앞쪽을 출력한다
for (int i = 0; i<26; i++){
    for(int j = 0; j<x[i]/2; j++){
        printf("%c", i+'A');
    }
}

//총 문자가 홀수일 때 가운데 알파벳을 출력한다
if (mid) printf("%c", mid);


//나머지를 출력한다
for(int i=25; i>=0; i--){
    for(int j=0; j<x[i] /2; j++){
        printf("%c", i+'A');
    }
    }
    
    printf("\n");
    return 0;
}

 

#include<stdio.h>

int main(){

	//큰 숫자도 받을 수 있으므로 long long으로 변수형을 설정해준다
    long long N, L, W, H;
    scanf("%lld %lld %lld %lld", &N, &L, &W, &H);
    
    double left = 0;
    
    //right가 될 가장 큰 값을 찾는 삼항연산자이다. L, H, W 중에 가장 큰 값을 찾는다
    double right = (L >W ? (L > H ? L : H) : (W > H ? W : H));
    double mid;
    
    //대략 100번 정도 시행하면 문제에서 말하는 값이 나온다고 한다. 100번보다 더 해도 된다
    for (int i=0; i<100; i++){
        mid = (left + right) /2.0;
        
        //큰 상자에 몇 개가 들어갈 수 있을지를 num값에 넣는다
        long long num = (long long)(L / mid) * (long long)(W / mid) * (long long)(H / mid);
  
  //이진 탐색 부분이다
    if (num >= N){
        left = mid;
    } else {
        right = mid;
    }
        
}
        
        printf("%.10lf\n", left);
    return 0;
        
        }

'C언어' 카테고리의 다른 글

2025년 여름학기 6주차 C언어  (1) 2025.08.02
2025년 여름학기 5주차 C언어  (1) 2025.07.27
2025년 여름학기 3주차 C언어  (1) 2025.07.11
2025년 여름학기 2주차 C언어  (0) 2025.07.06
2025년 여름학기 1주차 C언어  (0) 2025.06.29