코딩 스터디

[250128] C 스터디 2주차

jisu0924 2025. 1. 29. 01:16

프로그래머스 5문제 풀이

 

1. 문자열 출력하기

더보기

문제 설명
문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

제한사항
1 ≤ str의 길이 ≤ 1,000,000
str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

#include <stdio.h>
#define LEN_INPUT 1000001

int main(void) {
    char s1[LEN_INPUT];
    scanf("%s", s1);

    return 0;
}

문자형 배열 s1의 크기를 100001로 정의해 둔 상태이고, 입력은 하지만 출력이 보이지 않는 상태이니 printf를 사용한 코드 한 줄을 넣어 주면 된다. 

 

#include <stdio.h>
#define LEN_INPUT 1000001

int main(void) {
    char s1[LEN_INPUT];
    scanf("%s", s1);
    printf("%s",s1);

    return 0;
}


문제 2. a와 b 출력하기

더보기

문제 설명
정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.

제한사항
-100,000 ≤ a, b ≤ 100,000

#include <stdio.h>

int main(void) {
    int a;
    int b;
    scanf("%d %d", &a, &b);
    printf("%d", a + b);
    return 0;
}

숫자를 입력하면 

a = ?

b = ?

를 붙여서 출력해 주는 코드이다. 지금 코드를 보면 a와 b를 더한 값이 출력되고 있는데 이를 앞에서 말한 형식으로 바꾸어 주면 된다. printf를 두 줄 쓰나 탭을 사용하여 두 문장을 나누어 주어야 한다.

#include <stdio.h>

int main(void) {
    int a;
    int b;
    scanf("%d %d", &a, &b);
    printf("a = %d\n", a);
    printf("b = %d", b);
    return 0;
}


3. 문자열 반복해서 출력하기

더보기

문제 설명
문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

제한사항
1 ≤ str의 길이 ≤ 10
1 ≤ n ≤ 5

#include <stdio.h>
#define LEN_INPUT 11

int main(void) {
    char s1[LEN_INPUT];
    int a;
    scanf("%s %d", s1, &a);
    return 0;
}

문자형 변수와 정수형 변수를 입력해 주는 것까지 쓰여 있으니 앞에서와 마찬가지로 출력 코드를 입력해 주면 된다. a번을 반복하여 출력해야 하니 for문을 사용하여 입력한 s1를 a번 반복하여 출력하도록 코드를 짜 준다.

#include <stdio.h>
#define LEN_INPUT 11

int main(void) {
    char s1[LEN_INPUT];
    int a;
    scanf("%s %d", s1, &a);
    for(int i=0;i<a;i++){
        printf("%s",s1);
    }
    return 0;
}


4. 대소문자 바꿔서 출력하기

더보기

문제 설명
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

제한사항
1 ≤ str의 길이 ≤ 20
str은 알파벳으로 이루어진 문자열입니다.

#include <stdio.h>
#define LEN_INPUT 10

int main(void) {
    char s1[LEN_INPUT];
    scanf("%s", s1);

    return 0;
}

파이썬 같이 함수를 사용하지 않고 풀이하려면 아스키코드를 이용하면 된다. A-Z가 65-90, a-z가 97-122이기에

  • 대문자 -> 소문자라면 +32
  • 소문자 -> 대문자라면 -32

를 하면 된다. 

 

문자열 전체의 대소문자를 바꿔야 하니 반복문 안에 조건문을 사용하여 코드를 작성하면 된다. LEN_INPUT만큼 반복하고 a-z일 경우 s1[i]의 값에 -32를 하며, A-Z일 경우 s1[i]의 값에 +32를 한다. 이후 s1을 출력하면 대소문자가 바뀌어 출력된다.

#include <stdio.h>
#define LEN_INPUT 10

int main(void) {
    char s1[LEN_INPUT];
    scanf("%s", s1);
    for(int i=0;i<LEN_INPUT;i++){
        if(s1[i]>='a' && s1[i]<='z')
            s1[i]-=32;
        else
            s1[i]+=32;
    }

    printf("%s",s1);
    
    return 0;
}

작동했는데 몇 개가 안 되길래 LEN_INPUT을 20으로 바꿔 준 후 다시 작동하였더니 동작한다. 실패한 입력값들이 다 10이상의 문자였나 봄


5. 특수문자 출력하기

더보기

문제 설명
다음과 같이 출력하도록 코드를 작성해 주세요.

 

출력 예시

!@#$%^&*(\'"<>?:;

#include <stdio.h>

int main(void) {
    return 0;
}

그냥 복붙하여 실행하면 오류가 난다,

#include <stdio.h>

int main(void) {
    printf("!@#$%^&*(\'"<>?:;");
    return 0;
}

"나 '를 문자로 인식하지 못하기 때문인데, 앞에 '\'를 입력해 주면 된다.

#include <stdio.h>

int main(void) {
    printf("!@#$%^&*(\\'\"<>?:;");
    return 0;
}

'코딩 스터디' 카테고리의 다른 글

[250204] C 스터디 3주차  (0) 2025.02.04
[241125] C++ 스터디 5주차  (0) 2024.11.25
[241119] C++ 스터디 4주차  (0) 2024.11.20
[241112] C++ 스터디 3주차  (1) 2024.11.12
[241104] C++ 스터디 2주차  (0) 2024.11.04