반응형

C언어 26

백준 2529번. 부등호 (C언어)

백준 2529번 부등호 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. www.acmicpc.net/problem/2529 접근방법 처음 문제를 풀려고 할 땐 딱히 떠오르는 방법이 없어서 매우 고민했던 문제입니다. 각 부등호의 개수에 따라서 최대값, 최대값을 정해서.. 어쩌고 저쩌고 생각을 많이 해봤는데, 답이 잘 안나와서 일단 문제를 다시 차분히 읽어봤습니다. 그랬더니 문제에서 부등호 k의 범위가 최대 9까지라고 했고, 즉 숫자는 최대 10개이기 때문에 모든 경우의 수를 다 검사하는 완전탐색으로 풀리지 않을까 생각했습니다. int main() { int k, i; scanf("%d", &k); for (i = 0; i 0) { strcpy(min, copy); } } } } for (int i..

백준 2020.08.14

백준 1049번. 기타줄 (C언어)

백준 1049번 기타줄 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 접근방법 해당 문제같은 경우 예제의 입력과 출력을 잘 보면 매우 간단하게 풀어낼 수 있는 문제입니다. 보통 이런 문제의 경우 묶음과 낱개를 함께 구매해야 한다고 생각할 수 있는데, 예제를 보면 묶음과 낱개를 따로따로 구매할 수 있습니다. 따라서 묶음 중 최소 가격, 낱개 중 최소 가격을 구한 뒤, 필요한 기타줄을 ..

백준 2020.08.13

백준 10610번. 30 (C언어)

백준 10610번 30 문제입니다. 자세한 문제 내용은 글을 읽어보시기 바랍니다. https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 접근방법 솔직히 이 문제의 경우 어떻게 시작해야 될지 처음에 막막했습니다. 가장 먼저 생각한 것은 일단 0이 없으면 30의 배수를 절대 만들 수 없으니 입력받은 숫자에서 0이 없다면 바로 -1을 반환하고 종료하는 것부터 시작했습니다. 다음으로 생각해본 것은 최대값을 어떻게 만드느냐 인데, 30의 배수인지 판단하는 ..

백준 2020.08.12

백준 1541번. 잃어버린 괄호 (C언어)

백준 1541번 잃어버린 괄호 문제입니다. 자세한 내용은 문제를 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1541 접근방법 문제 자체는 별로 어렵지 않은데, 이상한 곳에서 좀 시간을 잡아먹었던 문제입니다. 먼저, 이 문제는 계산식을 문자열로 입력받아서 괄호를 사용해 가장 낮은 결과를 얻는 문제입니다. 문자열 자체는 저희가 임의로 설정하는 것이기 때문에 문자열을 수정할 필요는 없습니다. 해결법은 간단하게 최초의 -가 나올 때까지 모든 수를 결과에 더해주고, -가 나온 이후의 숫자를 모두 빼주시면 해결 가능합니다. 예를 들어 55-50+40-90+58-54과 같은 수식이 있을 때, - 이후의 모든 식은 55-(50+40)-(90+58)-54와 같이 바꿀 수 있습니다. 그..

백준 2020.08.11

C언어 21. 전처리와 분할 컴파일-2

저번 글에 이어서 전처리와 분할 컴파일에 대해 설명해보도록 하겠습니다. 저번 글에서 알아본 define에 대해서 간단하게 복습해봅시다. define은 정수, 실수 또는 문자열 상수(확장 문자열)를 기호화(매크로명)해서 사용할 수 있게 해주는 명령어이며, 사용법은 다음과 같습니다. #define 매크로명 확장문자열 이런 define과 매우 비슷한 것이 C언어에는 존재하고 있는데요, 바로 변수와 상수 글에서 알아보았던 const명령어입니다. const는 데이터를 상수명으로 기호화해서 사용할 수 있게 해 준다고 할 수 있을 것입니다. 이러한 const를 사용해서 정수, 실수, 문자 등등의 상수를 저장할 수 있는데, 일반 자료형만이 아닌 포인터 변수 또한 상수화하여 사용할 수 있습니다. 포인터 변수의 상수화 그..

C언어 20. 전처리와 분할 컴파일-1

이번 글에선 전처리와 분할 컴파일에 대해 알아보도록 하겠습니다. 저희가 지금까지 코드를 작성할 때, 언제나 작성했던 #include 가 무엇인지 드디어 그 의미를 알 수 있을것입니다. 전처리 먼저 전처리에 대해 설명할 텐데, 기억하실지 모르겠지만 개발 툴 설치 때 잠깐 이야기했던 컴파일 과정에서 전처리에 대해서 한번 언급했었습니다. 컴파일러는 컴파일 시 전처리 과정을 거치게 되는데, 이 전처리 과정시에 #으로 시작되는 명령들만 따로 실행하게 됩니다. 이들은 전처리 명령어라고 합니다. 그럼 전처리 명령어엔 어떤 것들이 있는지 알아봅시다. 먼저 우리가 언제나 사용했던 include에 대해 알아봅시다. include는 사전에서 포함시키다 라는 뜻을 가지고 있는데요, 말 그대로 자신이 원하는 파일을 특정 디렉토..

C언어 19. 파일 입출력-2

저번 글에선 파일 입출력이 무엇인지 알아보았습니다. 이어서 이번 글에선 실제로 파일에 데이터를 출력하고, 파일로부터 입력을 받아봅시다. 일단 복습하는 의미로 파일 포인터를 파일과 연결해보도록 합시다. FILE* ifp; ifp = fopen("C:\\asd\\ex.txt", "r"); if (ifp == NULL) { return 1; } 파일에 하나의 문자를 입, 출력하자자 먼저 파일을 개방한 뒤, 하나의 문자를 입출력해보겠습니다. 이때 사용하는 함수는 입력용이 fgetc, 출력용이 fputc인데, 먼저 fgetc부터 알아보겠습니다. fgetc의 함수 원형은 다음과 같습니다. int fgetc(FILE*); 이 함수는 파일 포인터를 통해 파일과 연결한 뒤, 파일로부터 프로그램에 한 개의 문자를 입력받습..

C언어 18. 파일 입출력-1

이번 글에선 C언어의 파일 입출력에 대해서 알아보도록 하겠습니다. 먼저 파일 입출력이란 무엇인가에 대해서 한번 생각해봅시다. 직관적으로 생각하면 데이터를 파일로 출력하거나, 파일로부터 읽는 것이라 할 수 있습니다. 그런데, 이것은 사람의 관점에서 바라볼 때의 이야기입니다. 실제 프로그램 입장에서 파일 입출력은 더 포괄적인 의미를 가지고있습니다. 프로그램 입장에서 파일은 데이터를 입출력하는 모든 대상이란 의미를 가지고 있습니다. 예를 들어 키보드, 마우스, 모니터 등도 프로그램에겐 모두 파일이 되는 것입니다. 어떻게 이 모든 것을 파일이라는 하나의 단어로 말할 수 있는 것일까요? 스트림 파일 사실 프로그램이 입출력을 실행하는 대상은 모두 동일한 대상입니다. 이 대상을 스트림 파일이라고 말하는데, 프로그램은..

C언어 17. 응용자료형

이번 글에선 응용 자료형에 대해서 알아보도록 하겠습니다. 응용 자료형엔 여러 가지 종류가 있는데, 이번 글에선 구조체, 공용체, 열거형에 대해 알아보겠습니다. 여러 자료형을 포함하는 자료형? 먼저 구조체란 여러개의 변수를 묶어서 저장, 처리할 수 있도록 해주는 것을 이야기합니다. 기본적으로 배열과 흡사한데, 서로 어떻게 다른지 알아보도록 하겠습니다. 배열의 경우에는 배열의 타입에 맞는 데이터들을 저장할 때 사용합니다. 반면 구조체의 경우에는 저장할 데이터들의 타입들이 서로 달라도 사용 가능합니다. 예를 들어 배열과 구조체를 각각 컨테이너 박스라고 하고, 변수를 상자라고 생각해봅시다. 배열의 경우에는 과일상자만 담을 수 있는 컨테이너 박스이고, 구조체는 과일, 생선, 야채 등등을 여러가지 종류를 담을 수 ..

C언어 16. 변수의 영역

이번 글에선 변수의 영역에 대해서 알아보도록 하겠습니다. 사실 이와 관련된 이야기는 지금까지도 몇 번씩 이야기했었는데,이번 기회에 더 자세히 알아봅시다. 변수에는 자신의 영역이 존재한다. 우리가 사용하는 변수에는 각각 자신들이 속한 영역이 존재합니다. 변수들은 이 영역 안에 존재하며, 자신의 삶을 이 영역과 함께합니다. 이러한 변수들이 속한 영역의 범위에 따라서 그 변수를 부르는 호칭이 따로 존재합니다. 먼저 이전에도 한번 이야기했던 자동변수라는것이 있습니다. 이는 지역변수라고도 이야기하는데, 보통 하나의 함수에 종속되어 사용되는 변수입니다. 이 자동변수들은 함수 내에서 변수를 선언하면 메모리 공간을 할당받으며, 오직 그 함수 내에서만 해당 변수를 사용할 수 있습니다. 그리고 그 함수가 종료함과 동시에 ..

반응형