프로그래머스 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 |