전체 글 57

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

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

파일 입출력 라이브러리

스트림(Stream)은 순서있는 데이터를 입력받거나 출력할 때 입출력 장치로부터 데이터가 한 쪽으로 흘러가는 것을 의미 버퍼(Buffer)는 장치와 프로그램 사이에 전송되는 데이터를 임시로 저장하는 메모리 공간 이 두개의 개념이 특히 버퍼의 개념이 뒤에서 설명하는게 너무 이해가 되지 않았다. 앞에선 gets()등을 사용할때 버퍼가 필요없다 라고 뚱 지나갔으면서 이제서야 버퍼에 대한 정의를 설명하다니 정말이지 이해할 수 가 없다. 이 챕터에서는 외부파일을 열거나 생성하고 거기에 텍스트를 입력하고 저장하는 등을 하는데, 이제까지 우리가 프로그래밍을 한다고 해서 숫자나 문자가지고 계산하는 프로그램만 만들었지 코딩을 배우기 전에 생각했던 GUI프로그램은 언제쯤 만들수 있을까 고민했던 것들을 조금 희석해 주었으나..

6. 백준 1193 분수찾기 분명 어려운 문제가 아닌데 어렵다 -C 언어

이 지그재그 문제 처음 봤을 때 어떻게 굴러가는지 전혀 이해가 되지 않았다. 정말로 이 문제를 풀수 있나하면서 그림까지 그리고도 이해가 되지 않아 아래에 다시 정렬해본 후에야 이해가 되었다 분모 분자 각각 서로 떨어져서 계산해야 하는데 문자는 홀수까지 켜졌다 1까지 작아지고 다시 그 다음 홀수까지 켜졌다 작아진다. 분자는 1(홀수 최대) -> 1 -> 2 -> 3(홀수 최대) ->2 -> 1 -> 1 -> 2 -> 3 -> 4 -> 5(홀수 최대)이런식이로 분모는 1 -> 2(짝수 최대) -> 1 -> 1 -> 2 -> 3 -> 4(짝수 최대) 이런식으로 늘어나게 된다. 또 다른 풀이방법도 물론 있겠지만 아직을 여기까지가 내 한계였다. 위의 증명을 토대로 작성한 결과 뭔가가 틀어져서 맞긴 맞지만 애매하게..

1. 1과목 제 1장 데이터 모델링의 이해 - 자격증 도전기

리눅스마스터라는 큰 산을 해치운 나는 이번엔 sqld에 도전하고자 한다. 아예 sqld에 대해 하나도 모르던 나에겐 처음엔 너무 어렵게 다가왔지만 최근에 그저 이게 sql이란 프로그램 사용법이란 것을 깨달은 나는 부담을 털어버리고 일단 부딪쳐보기로 한다. 1과목인 이론은 처음봤을 때 굉장히 어려웠으나, 문제들은 생각보다 그리 어렵지 않았고 노랭이 제 1장을 풀어본 결과 30개중 15개를 맞췄다. 문제중 다시 찾아봐야했던 개념들을 다시 모아보자면, 데이터모델링 개념 개념적 - 추상화 수준이 높고 업무중심적, 포괄적 수준의 모델링 논리적 - 정확하게 표현, 재사용성 높음 물리적 - db에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계 데이터베이스 스키마 구조 3단계 외부스키마 - 개별 사용..

표준 입출력 함수와 문자열 함수(엔터키 무시, 외울 함수 많음) -C언어

짜잔! 내가 제일 싫어하는 문자열 시간☆ 문자를 두개 이상 입력해야 할때 #include int main(){ char a,b; scanf("%c",&a); scanf("%c",&b); printf("%c\n%c",a,b); } 이렇게 작성해버리면 입력할때 누른 [enter]키도 아스키코드에 들어가는 '문자'이기 때문에 자동으로 b에 입력이 된다. 여기서 해결방법은 크게 두가지가 있는데 하나는 #include int main(){ char a,b; scanf("%c",&a); scanf(" %c",&b); printf("%c\n%c",a,b); } 와 같이 뒷 코드에 스페이스바로 간격을 만들어 주는 것이고 *여기서 주의할점은 scanf(" %c",&a);이렇게 작성해버리면 [엔터]a[엔터]b로 입력해야 ..

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

요즘 백준 문제만 무작정 풀기엔 코딩 활용 능력은 점점 좋아지고 있지만 프로그래밍에 대한 기초 지식이 부족해서 문제를 못풀겠다는 느낌도 들고 코딩에서 알고리즘이 굉장히 중요하다는 말에 유명한 알고리즘 관련 책들을 2,3개 샀지만 내가 이해하기엔 조금 난해한 책들이 많아 기초부터 해야겠다는 생각에 이 책을 사게 되었다. 1챕터인 기본 알고리즘을 풀고있는데 이 단원은 기본이다보니 그리 어렵지 않았기에 블로그에 안올리려고 했으나 연습문제 푸는 와중에 3항 연산자라던가 평소에 쓰던 반복문을 다른 방식으로 사용하는 것이라던지 재미있는 사용방법이 떠올라 이렇게 작성하게 되었다. chap 1. Q11 - 자릿수를 출력하는 프로그램에서 평소에는 #include int main(){ int a,b=1; scanf("%d..

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로 나눈 나머지를 변수에 저장하고나니 겹치는 숫자를 판단할 만한 ..