C언어:7일차 (문자열~, 포인터)

이미리·2021년 8월 21일
0

boj_Algorithm

목록 보기
8/25

아무래도 아예 백준을 놓으면 감각을 잃을 것 같아서 병행하기로 했다..
가능할쥐...


5622 다이얼 문제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
	int leng, result=0;
	char arr[16];
	scanf("%s", arr);
	leng = strlen(arr);

	for (int i = 0; i < leng; i++) {
		if ((65 <= arr[i]) && (arr[i] <= 67)) {
			result += 2;
		}
		else if ((68 <= arr[i]) && (arr[i] <= 70)) {
			result += 3;
		}
		else if ((71 <= arr[i]) && (arr[i] <= 73)) {
			result += 4;
		}
		else if ((74 <= arr[i]) && (arr[i] <= 76)) {
			result += 5;
		}
		else if ((77 <= arr[i]) && (arr[i] <= 79)) {
			result += 6;
		}
		else if ((80 <= arr[i]) && (arr[i] <= 83)) {
			result += 7;

		}
		else if ((84 <= arr[i]) && (arr[i] <= 86)) {
			result += 8;
		}
		else if ((87 <= arr[i]) && (arr[i] <= 90)) {
			result += 9;
		}
	}
	printf("%d", result+leng);
}

for, if문 범벅으로 코드를 짰다...
너무 더러운것 같어.. 파이썬이라면 딕셔너리로 해결햇을 것 같은데 아쉽다.

다른 분들의 코드를 보니 switch&case로 코드를 정리하셨다.


2941번 크로아티아 알파벳

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

int main(void) {
    char arr[101];
    int leng;
    scanf("%s", arr);
    leng = strlen(arr);
    printf("%d\n", leng);
    for (int i = 0; i < leng; i++) {
        if (arr[i] == '=') {
            if (arr[i - 1] == 's') leng--;
            if (arr[i - 1] == 'c') leng--;
            if (arr[i - 1] == 'z') {
                leng--;
                if (arr[i - 2] == 'd') leng--;
            }
        }
        //=으로 끝나는것
        if (arr[i] == '-') {
            if (arr[i - 1] == 'c') leng--;
            if (arr[i - 1] == 'd') leng--;
        }
        // - 
        if (arr[i] == 'j') {
            if (arr[i - 1] == 'n') leng--;
            if (arr[i - 1] == 'l') leng--;
        }
        //j
    }
    printf("%d", leng);
    return 0;
}

반례는 찾았는데 왜 틀렸는지 모르겟다...
dz=, z=를 입력하면 제대로 1이 뜨는데 ddz=z=를 입력하면 4가 나온다..
왜이러지

0개의 댓글