C언어 11

문자열문자열2 백준 1157 단어공부 -C언어

문자열이 문자열 했다!!!! 소문자와 대문자에 대해 어떻게 다뤄야할지 toupper를 사용해야 할지 고민하고 있을 때 친구가 이 문제 풀었다길래 어떤식으로 풀었냐고 물어보니 만약 소문자가 나오면 아스키코드 -32를 해 풀었다고 한다. 상당히 똑똑한 친구인거 같다. #include #include int main(){ char a[1000001]; int b[100]={-1,}, result=0, cnt=0, t=0; scanf("%s",a); int len = strlen(a); for(int i=0; i91){ //소문자일경우 대문자로 변환 a[i]-=32; } for(int j=65; j

문자열문자열 백준 10757 큰 수 구하기 - C언어

늘 말하는 이야기지만 나는 문자열을 좋아하지 않는다. 백준에서는 허용 범위를 초과하는 큰수는 에러가 나기 때문에 문자열을 이용하여 계산해야 하는데 나는 문자열을 잘 사용하지 못하기 때문에 이에 큰땀을 흘렸다. 처음엔 되겠지 하면서 #include int main(){ unsigned long long A, B; scanf("%llu %llu", &A,&B); printf("%llu",A+B); } 입구컷! 이에 다른 블로그 글 들의 샅샅이 뒤져서 이해는 못하지만 억지로 내 코드랑 억지로 섞어서 만들어 봤지만 #include #include #include int main(){ char num1[10002], num2[10002]; //입력받을 값 int a,b,x,i, cnt,sum=0, carry=0;..

쉬운 스택 알고리즘 - C언어

처음 스택에 대해 배울때 스택이 무엇을 말하는 건지는 알겠으나 도대체 어떻게 써먹는지 이해가 되지 않았다. 현재 알고리즘 책 두 권을 가지고 있는데 이 책들에 써져있는 스택을 빡공 하려했으나 이 책들에선 처음엔 쉽게 스택은 이렇고 이런거다 LIFO(Last In First Out)방식이다 라고 아주 기초적인 설명하면서 정작 스택 코드를 설명할땐 갑자기 안써도될 구조체 나오고, 선행처리기 나오고, 사용자 정의 함수를 사용해서 엄청 복잡하게 설명하기에 바로 기가 팍 죽어서 스택이라는 함수가 있고 이 모든걸 다 외워야 한다는 생각에 빠지게 만들었으나. 공부를 하다가 유레카. 스택은 함수가 아닌 그저 풀이방식 즉 알고리즘의 일종이며 이건 그냥 내가 쓰기에 달렸다는 것을 깨달았다. push 고 pop이고 그냥 다..

2. do it! 02-1 기본 자료구조 (포인터, 배열, 난수(랜덤 수))- c언어

챕터 2에 들어가자 마자 배열을 설명하면서 배열의 크기 선언에 대해 설명하는데 중간중간에 내가 좀 어려워하는 포인터도 들어가서 하나하나 따라해보면서 이해해보려고 했다.. 했었으나.... 하핫 처음 코드부터 개같이 멸망 ㅎㅎㅎㅎㅎ 뭐라하는지 봤더니 호환되지 않는 유형 'void *'에서 'int *'에 할당됨 음음 코드에 대한 설명은 호출한 calloc 함수는 지정된(1 * sizeof(int) 바이트) 크기의 메모리를 힙 영역에 할당하고, 할당한 메모리의 첫번째 주소를 반환합니다. 할당한 메모리가 필요없어지면 포인터를 free 함수에 전달해 메모리를 해제합니다. 라고한다! 자료형이 int형이고, 요소 개수가 n인 배열 생성 calloc(n,sizeof(int)) 포인터(pointer)란? 객체(변수) 또..

4. 백준 15596 정수 n개의 합 구하기 (문제를 잘 읽자,사용자정의함수배열)- c언어

처음 이 문제를 봤을때 이해가 전혀 되지 않았다. 보통 문제로 바로 해결방법을 알아차리기 보단 예제 입력 & 출력을 보고 문제를 파악하는 편인데 이번 문제에선 그런게 전혀 나오지 않았다. 그러는 와중에 이 단계의 다른 문제들은 이미 성공이라고 되어있기에 어떤 형식의 문제인가 싶어 봤더니.... 기초 문법떼기 리스트에서 가장 마지막에 있던 문제이자 가장 애를 먹었었던 셀프넘버가 그밑에 있었다....... 이를 발견함과 동시에 정말, 매우, 자신감이 떨어졌지만 일단 부딪쳐보기로 했다. 예제 입력이 어떻게 되는지도 모르겠고 감이 아예 안잡히지만 일단 무작정 코드를 써보기로 했는데 #include int main(){ long long n, hap=0; while(scanf("%lld",&n) ==1){ hap..

3. 백준 3052 나머지 겹치지 않는 숫자 구하기 - c언어

이번 백준문제는 10개의 수를 받고 42로 나눈 나머지 숫자중 안겹치는 숫자의 개수를 세는 문제이다 사실 이 문제는 저번에 풀려고 한번 도전 했었으나 나머지 숫자중 겹치는 숫자를 알아내는 방법을 모르겠어서 포기한 문제였고 이후에 1.백준 8958번인 ox퀴즈도 연달아 틀리게 되어 나에게 깊은 패배감을 주었던 문제이다. 이후 방학때 적어도 백준 하루에 한 문제씩 풀자라는 결심을 하게 되었고 2. 백준 4344 평균은 넘겠지 문제를 통해 자신감을 되찾은 나는 다시 이 문제에 도전을 하게 되었다. 전에 겪었던 굴욕을 다시 마주하게 된 나는 쪼큼 걱정을 하게 되었지만 그 걱정이 무색하게 간단하게 문제가 풀렸다. 일단 처음엔 기초 베이스인 수를 42로 나눈 나머지를 변수에 저장하고나니 겹치는 숫자를 판단할 만한 ..

2. 백준 4344 평균은 넘겠지(feat.%프린트 하는 방법) - c 언어

이미 백준의 단계별로 풀어보기중 1차원 배열 문제에서 두번의 패배를 맛본 나는 더이상 물러날 곳이 없었다. 마음을 다독이며 새로히 도전한 문제는 바로 4344 평균은 넘겠지 이 문제는 처음에 '케이스의 개수'를 던져준 다음 '학생의 수'를 주고 학생의 수 만큼 '점수'를 주어 평균을 내고 '평균 이상인 학생'을 퍼센트로 나타내는 문제이다. 그다지 어려운 문제도 아니고 문제가 반복 개수와 변수의 수도 알아낸 이상 바로 도전해보기로 했는데 우선 가장 기본적인 반복문을 한 케이스당 학생의 수 만큼 반복하는 식과 받은 점수를 합산하여 평균을 내는 식을 만들어 주었고 이상은 없었다. 평균 이상인 학생도 배열을 사용하여 cnt로 인원을 세주었고 cnt는 소수점 자리도 나타내야 하기 때문에 float로 변수 선언을 ..

표준 라이브러리의 선행 처리기 -C언어

드디어 새로운 챕터인 표준 라이브러리에 들어가게 되었다. 새로운 챕터이니 만큼 새로운 지식을 머리속에 집어넣어야 한다는 압박감을 잠시 느꼈지만 그 걱정이 무색하게 선행처리기의 내용은 정말 별것 아니었다. 처음 c언어를 쓰게되면 거의 무조건적으로 #include 와 를 써야하는 데 이 챕터에서 왜 이 헤더파일을 사용해야 하는가에 대해 잠깐 짚고 넘어갔다. 그러면서 입력받은 알파벳가 대,소문자인지 가려내고 이를 대->소 , 소 -> 대 로 변환하는 프로그램을 잠깐 만들어 보았는데 별 내용은 아니었고 그냥 엑셀에서 함수를 사용해 대소문자를 변환하는 것과 비슷했다. #include //알파벳 변환 함수 헤더 int main(){ ... if(isupper(op)) //알파벳 대문자를 판단하는 함수 op = to..