프로그래밍/알고리즘

1. do it! 자료구조와 함께 배우는 알고리즘 입문 - c언어

량아이 2022. 7. 25. 19:41

요즘 백준 문제만 무작정 풀기엔 코딩 활용 능력은 점점 좋아지고 있지만 프로그래밍에 대한 기초 지식이 부족해서 문제를 못풀겠다는 느낌도 들고 코딩에서 알고리즘이 굉장히 중요하다는 말에 유명한 알고리즘 관련 책들을 2,3개 샀지만 내가 이해하기엔 조금 난해한 책들이 많아 기초부터 해야겠다는 생각에 이 책을 사게 되었다.

do it! 자료구조와 함께 배우는 알고리즘 입문

1챕터인 기본 알고리즘을 풀고있는데 이 단원은 기본이다보니 그리 어렵지 않았기에 블로그에 안올리려고 했으나 연습문제 푸는 와중에 3항 연산자라던가 평소에 쓰던 반복문을 다른 방식으로 사용하는 것이라던지 재미있는 사용방법이 떠올라 이렇게 작성하게 되었다.

 

chap 1. Q11 - 자릿수를 출력하는 프로그램에서 평소에는 

#include <stdio.h>

int main(){
    int a,b=1;
    scanf("%d",&a);
    int i=10;
    while(a>i){
        a/=i;
        b++;
    }
    printf("%d",b);
}

이렇게 작성했겠지만

#include <stdio.h>

int main(){
    int a,b=1;
    scanf("%d",&a);
    for(int i=10;a/i>0;i*=10){
        b++;
    }
    printf("%d자리입니다\n",b);
}

이렇게 입력하는 방식도 있다!!

아닌가...? 똑같나? 되게 참신하게 작성했다고 생각했는데 예전엔 이렇게 작성했을거라고 짠걸 보면 거기서 거기인거같기도...? 하핳

 

중간중간에 새로운 함수들도 있었다

#include <stdio.h>

int main(){
    int a;
    scanf("%d",&a);
    for(int i=1;i<=a;i++){
        for(int j=0; j<i; j++){
            putchar('*');
        }
        puts(""); //putchar('\n');으로도 가능!!
    }
}

재미있는 점은 printf()는 \n을 쓰지 않는이상 줄바꿈이 되지 않지만 puts()은 줄 끝에 자동으로 줄바꿈이 된다.

*여기서 유의해야할 점은 puts은 printf("%d",a)와 같은 변수 출력이 되지 않는다!!

인줄 알았으나 출력 된다. puts(변수); 이케 입력하면 된다.

putchar()은 말그대로 문자만 출력 가능하다!

 

 

별로 피라미드 그리기도 평소의 나라면 이렇게 작성하겠지만,

#include <stdio.h>
void spira(int a){
    int j;
    for(int i=a-1;i>0;i--){
        for(j=0;j<i;j++){ //맨 앞 빈공간 삼각형
            putchar(' ');
        }
        for(j=a;j>i;j--){ //첫번째 삼각형
            putchar('*');
        }
        for(j=a-1;j>i;j--){ //두번쨰 삼각형
            putchar('*');
        }
        puts("");
    }
}
int main(){
    int a;
    scanf("%d",&a);
    spira(a);
}

이렇게 좀 더 깔끔하게 입력할 수 있다는 것을 알았다!!!

#include <stdio.h>
void spira(int n){
    int i,j;
        for (i = 1; i <= n; i++) {
            for (j = 1; j <= n - i; j++)
                putchar(' ');
            for (j = 1; j <= (i - 1) * 2 + 1; j++)
                putchar('*');
            putchar('\n');
        }
}
int main(){
    int a;
    scanf("%d",&a);
    spira(a);
}

 

이 책의 한가지 아쉬운점은 예제의 정답코드도 제공하지만 한글이 깨진다....

 

이것으로 chap1. 기본 알고리즘 끝!