[Baekjoon] - 7단계 : 문자열
1. 아스키 코드
#include <stdio.h>
int main(){
char n;
scanf("%c",&n);
printf("%d",n);
}
2. 숫자의 합
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
char arr[n];
scanf("%s",arr);
int sum = 0;
for(int i=0;i<n;i++) sum += arr[i] - '0';
printf("%d",sum);
}
3. 알파벳 찾기
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
scanf("%s",s);
int arr[26] = {0};
for(int i=0;i<26;i++) arr[i] = -1;
for(int i=0;i<strlen(s);i++){
if(arr[s[i]-'a'] != -1){
continue;
}
arr[s[i]-'a'] = i;
}
for(int i=0;i<26;i++)
printf("%d ",arr[i]);
}
4. 문자열 반복
#include <stdio.h>
#include <string.h>
int main(){
int c,n;
scanf("%d",&c);//케이스
for(int i=0;i<c;i++){
char arr[21];
scanf("%d %s",&n,arr);//문자열
for(int j=0;j<strlen(arr);j++){
for(int k=0;k<n;k++)
printf("%c",arr[j]);
}
printf("\n");
}
}
5. 단어 공부
#include <stdio.h>
int main() {
char arr[1000001];
int alpha[26] = { 0, };
int m = 0;
char c = '?';
scanf("%s", arr);
for (int i = 0; arr[i] != '\0'; i++) {
if (arr[i] >= 'a') arr[i] -= 32;
alpha[arr[i] - 65]++;
}
for (int i = 0; i < 26; i++) {
if (m < alpha[i]) {
m = alpha[i];
c = i;
}
else if (m == alpha[i]) {
c = '?';
}
}
if (c != '?') printf("%c", 65 + c);
else printf("?");
return 0;
}
6. 단어의 개수
#include <stdio.h>
#include <string.h>
int main(){
char s[1000000];
scanf("%[^\n]",s);
int space = 1;
for(int i=1;i<strlen(s)-1;i++){
if(s[i] == ' ') space++;
}
if(strlen(s) == 1 && s[0]== ' ') space = 0;
printf("%d",space);
}
7. 상수
#include <stdio.h>
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
int aa = 0, bb = 0;
int cnt = 100;
while (a > 0 && b > 0) {
aa = aa + ((a % 10)*cnt);
a /= 10;
bb = bb + ((b % 10)*cnt);
b /= 10;
cnt /= 10;
}
if (aa > bb) printf("%d", aa);
else printf("%d", bb);
}
8. 다이얼
#include <stdio.h>
#include <string.h>
int main(){
char arr[15];
scanf("%s",arr);
int time = 0;
for(int i=0;i<strlen(arr);i++){
char c = arr[i];
if('A'<= c && c <= 'C') time += 3;
else if('D'<= c && c <= 'F') time += 4;
else if('G'<= c && c <= 'I') time += 5;
else if('J'<= c && c <= 'L') time += 6;
else if('M'<= c && c <= 'O') time += 7;
else if('P'<= c && c <= 'S') time += 8;
else if('T'<= c && c <= 'V') time += 9;
else if('W'<= c && c <= 'Z') time += 10;
}
printf("%d",time);
}
9. 크로아티아 알파벳
#include <stdio.h>
#include <string.h>
int main(){
char arr[100];
scanf("%s",arr);
int alpa = strlen(arr);
for(int i=0;i<strlen(arr);i++){
if(arr[i]=='=' || arr[i]=='-') alpa--;
if(arr[i]=='d' && arr[i+1]=='z' && arr[i+2]=='=') alpa--;
if((arr[i]=='l' || arr[i]=='n') && arr[i+1]=='j') alpa--;
}
printf("%d",alpa);
}
10. 그룹 단어 체커
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main() {
int n;
scanf("%d", &n);
char arr[100];
int sum = 0;
for (int i = 0; i < n; i++) {
scanf("%s", arr);
bool alpha[26] = { false, };
int count = 1;
char prev = '?';
for (int j = 0; j < strlen(arr); j++) {
if (prev == arr[j]) continue;
if (alpha[arr[j] - 'a']) {
count = 0;
break;
}
alpha[arr[j] - 'a'] = true;
prev = arr[j];
}
sum += count;
}
printf("%d", sum);
}
요약
- 실행결과가 안나오니 vsc를 써야지..
- 초기화를 안해주니 답이 안나오는경우가 많다. 초기화를 잘해주자