[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를 써야지..
  • 초기화를 안해주니 답이 안나오는경우가 많다. 초기화를 잘해주자