알고리즘/백준(BOJ) 문제풀이

[C언어 백준 풀이][Bronze] 2438번 : 별 찍기 1 / 2562번 : 최댓값 / 2675번 : 문자열 반복

restudy 2021. 11. 23. 12:43
반응형

이 포스트는 프로그래밍 문제 사이트 백준 Online Judge의 Solved.ac 기준 Class 1+ 에센셜 문제들에 해당하는 2438번 : 별 찍기 - 1, 2562번 : 최댓값, 2675번 : 문자열 반복 문제들에 대한 풀이 코드와 해설을 다룹니다.

 

 

2438번 : 별 찍기 - 1

 

간단한 반복문을 활용하는 출력 문제입니다.

 

#include<stdio.h>

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

 

2개의 for문에 대한 범위 설정을 배우는 문제입니다.

i는 1부터 N까지로 잡아주고, 안쪽 루프에서 j는 1부터 i까지 출력해주면 됩니다.

안쪽 루프가 끝날 때마다 개행 문자를 출력해주어야 합니다.

 

 

2562번 : 최댓값

 

9개의 고정된 개수의 자연수들 중에서 최댓값을 찾아 출력하는 문제입니다.

자연수이므로 1 이상의 정수이기 때문에 초기값 설정이 어렵지 않습니다.

 

#include<stdio.h>

int main() {
    int max = 0, num, order;
    for(int i=0; i<9; i++) {
        scanf("%d", &num);
        if(num > max) max = num, order = i+1;
    }
    printf("%d\n%d", max, order);
}

 

위에서 언급한대로 모든 입력이 자연수이므로 초기 max를 0으로 설정한 뒤 max보다 큰 입력에 대해 최댓값을 바꿔주면됩니다.

최댓값이 몇 번째인지 그 순서 또한 출력하라고 하였으므로 order 변수를 선언하여 해당 번호를 저장해서 출력해주면 됩니다.

 

 

2675번 : 문자열 반복

 

입력받은 문자열을 입력된 정수만큼 각 문자를 반복해서 출력하는 문제입니다.

문자열의 길이는 20을 넘지 않으므로 입력받는 즉시 처리하지 않더라도 문자 배열에 저장 및 접근해서 여러 번 출력시켜주면 됩니다.

 

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

int main() {
    int T, R;
    char str[25];
    scanf("%d", &T);
    for(int i=0; i<T; i++) {
        scanf("%d %s", &R, str);
        for(int j=0; j<strlen(str); j++)
            for(int k=0; k<R; k++) printf("%c", str[j]);
        printf("\n");
    }
}

 

테스트케이스 T에 대한 반복문이 하나의 루프를 차지하고 있기 때문에 안쪽에 있는 이중 반복문까지 해서 총 3개의 반복문을 구현해야 합니다.

T를 입력받고, 각 T에 대해 문자열을 입력받아 str로 선언한 string에 저장합니다.

이후 strlen 함수를 이용하여 문자열의 길이만큼 각 문자에 대해 R번 출력을 수행해주면 됩니다.

 

 

 

반응형