[TIL]20210714

박창현·2021년 7월 14일
0

TODAY I LEARNED

목록 보기
15/53

백준

11720

#include <stdio.h>

int main()
{ 
  long a,b,num,total=0,alpha;
  scanf("%ld",&a);
  scanf("%ld",&num);

  for (int i =0;i<a;i++){
    alpha=num%10;
    total+=alpha;
    num=num/10;
  }
  printf("%ld",total);
  
}

로 풀려고 했지만, 테스트 케이스중에 24자리 정도의 정수가 있어서 다른방법으로 접근해야한다.

#include <stdio.h>

int main()
{ 
  int a,b,total=0,alpha;
  char num[100]={0};
  scanf("%d",&a);
  scanf("%s",num);

  for (int i =0;i<a;i++){
    printf("%d\n",num[i]);
    total+=num[i];
  }
  printf("%d",total);
  
}

이런식으로 접근하니까

5
54321

53
52
51
50
49
255

이런식으로 출력되었다. 문자열 리스트에 정수값을 넣어서 아스키값이 저장, 출력되서 그렇다. 그렇기에 아스키에서 숫자 0을 의미하는 48을 이용해 total+=num[i]-48; 하면 해결된다.

#include <stdio.h>

int main()
{ 
  int a,b,total=0,alpha;
  char num[100]={0};
  scanf("%d",&a);
  scanf("%s",num);

  for (int i =0;i<a;i++){
    total+=num[i]-48;
  }
  printf("%d",total);
  
}

숫자가 너무 크다면 long long int 보다 차라리 리스트 를 이용하자.

10809

#include <stdio.h>

int main()
{ 
  int a,b,total=0,alpha, arr[26]={0};
  char string[100]={0};
  scanf("%s",string);
  for (int i=0;string[i]!='\0';i++){

    if(arr[string[i]-97]==0){
    arr[string[i]-97]=i;
    if (i==0){
    arr[string[i]-97]=200;
      }
    }
  }
    for (int i =0;i<26;i++){
    if(arr[i]==0){
      arr[i]=-1;
    }
    }
  for (int i =0;i<26;i++){
    if (arr[i]==200){
      arr[i]=0;
    }
    printf("%d ",arr[i]);
  }
}

2675

#include <stdio.h>

int main()
{ 
  int re,reo;
  char input[100];
  scanf("%d",&reo);
  for (int a =0;a<reo;a++){
  scanf("%d %s",&re,input);
  for (int i = 0; input[i]!='\0';i++){
    for (int j=0;j<re;j++){
      printf("%c",input[i]);
    }
  }
  printf("\n");
  }
}
profile
개강했기에 가끔씩 업로드.

0개의 댓글