본문 바로가기

C언어20

[C언어] free(NULL)함수는 좋은 습관일까? C언어에서 동적할당을 할 때, 동적할당이 제대로 되지 않아서 NULL포인터를 반환하거나, free() 함수를 이미 호출한 뒤에 또 free() 함수를 호출할 때가 있습니다. 이럴 때 NULL포인터를 free() 함수 매개변수에 넣어도 되는지 아니면 따로 조건문을 실행해서 NULL포인터가 아니면 free() 함수를 실행해야 하는지( if (ptr != NULL) free(ptr); ) free() 함수와 다른 글들을 통해서 설명하겠습니다. free() 함수 void free(void* ptr); free() 함수는 malloc(), calloc()과 같이 동적할당된 메모리를 해제시켜 주는 함수입니다. free() 함수의 매개변수인 ptr이 이전에 동적할당받은 포인터의 값과 다른 경우에는 free() 함수의.. 2023. 3. 13.
[C언어] 백준 2562번 최댓값 이번 문제는 정해진 개수만큼 숫자를 입력받고 최댓값과 최대값이 있는 위치를 찾는 문제로 배열을 이용하면 쉽게 최댓값과 최대값이 몇 번째에 있었는지 찾을 수 있습니다. 그리고 배열 없이도 문제를 해결할 수 있는데, 어떻게 할 수 있을지 두개의 코드로 보여드리겠습니다. 문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 .. 2023. 3. 5.
[C언어] 백준 1546번 평균 이번 문제는 백준 1546번 평균이라는 문제로 정수형 점수를 원하는 개수만큼 입력을 받은 뒤에 새로운 점수의 평균을 구하는 문제입니다. 이 문제의 핵심은 새로운 점수들의 평균을 만들 때 실수형으로 계산을 하기 위해서 형 변환이 필요하다는 것입니다. 문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 .. 2023. 2. 25.
[C언어] 백준 1157번 단어 공부 이번에는 백준 1157번 단어공부 문제에 대해서 같이 풀어보도록 하겠습니다. 이 문제는 알파벳을 변환할 수 있는 실력과 반복문을 돌려서 최고 값을 구할 수 있는지 물어보는 문제입니다. 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 생각 및 풀이과정 단어 길이가 1백만을 안 넘으니 char 배열의 길이은 1,000,001로 .. 2023. 2. 25.