728x90
728x90

2018/06 22

C++] 명품 C++ 프로그래밍 10장 실습문제 - 1

개인적으로 C++을 공부할 때 작성해놓았던 코드들 올린다.혼자 책을 사서 독학하고 그리고 학부생 시절에 복습하면서 했던 문제들이라서어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다.확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 지금까지는 실습문제 문제 내용까지 적었지만, 귀찮기도 하고, 굳이 입력할 필요성은 느끼지 않아서 적지 않았다. 차후 게시물을 대대적으로 수정할 때면 추가될지도 모른다. 실습문제 1. #include using namespace std; template T biggest(T arr[], int size) { T max = arr[0]; for (in..

백준] 2804 - 크로스워드 만들기(COCI 2011/2012)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 두 단어 A와 B가 주어진다. 두 단어는 30글자 이내이고, 공백으로 구분되어져 있다. 또, 대문자로만 이루어져 있고, 적어도 한 글자는 두 단어에 포함되어 있다. 출력A의 길이를 N, B의 길이를 M이라고 했을 때, 출력은 총 M줄이고, 각 줄에는 N개 문자가 있어야 한다. 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다. 나머지 글자는 '.'로 출력한다. 소스코드 #include #include using namespace std; int main(void) { string a, b; int alen, blen, aIdx = -1, bIdx = -1; cin >> a >> b; alen = a.length(); blen =..

Visual Studio 디버깅에서 메모리 값 확인하기

포인터, 변수의 주소에 대해서 그냥 책으로 그림만 그려가면서 공부하면지나치게 추상적으로 받아들여지고 실제로 그렇게 작동하는지 의심을 할 수도 있다.실체를 눈으로 보길 원하는 사람들에게 이건 반드시 그렇게 동작한다고 이야기하거나, 그냥 무작정 이렇게 돌아가니까 그런 줄 알고 활용만 잘하면 된다라고 하기보다는 직접 보여주는 게 좋은데, 비주얼 스튜디오(Visual Studio)의 편리한 디버깅 툴을 이용하면 어렵지 않게 실제 메모리에 어떻게 할당되는지 볼 수 있다. #include #include using namespace std; class Student { public: string name; int sNo; void Print(); static int studentNumber; static Stude..

C] 공용체(Union) 간단 정리

공용체(Union)는 기본적으로 구조체와 같은 선언 문법과 사용법이 동일한데, 가장 큰 차이점은 구조체 내의 멤버 변수들은 각자에게 할당된 메모리가 있으며 서로의 공유하지 않는데, 공용체는 멤버 변수 중 가장 큰 자료형의 공간을 공유하는 특성을 가지고 있음. 공용체를 선언할 때는 union 키워드를 사용. union {int i;short s[2];} u; 위 공용체의 크기를 sizeof()를 이용해 확인하면 4가 반환된다. 가장 큰 자료형이 int형이고 int형은 4바이트를 차지하기 때문이다. 만약 공용체 u가 구조체였다면 sizeof()를 통해 구조체 크기를 확인하면 4+2*2=8로 나왔을 것이다. 공용체는 기본적으로 공용체의 선두 번지와 같은 공간에 배치되어서 i의 번지와 s의 번지가 동일하게 된다..

백준] 14696 - 딱지놀이(KOI 2017)

시간 제한 : 2초메모리 제한 : 512MB 입력표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 딱지놀이의 총 라운드 수를 나타내는 자연수 N이 주어진다. N 은 1 이상 1,000 이하이다. 다음 줄에는 라운드 1에서 어린이 A가 내는 딱지에 나온 그림의 총 개수 a가 주어진다. a는 1 이상 100 이하이다. 뒤따라 나오는 a개의 정수는 어린이 A가 낸 딱지의 그림을 나타내는데, 각각 4, 3, 2, 1 중 하나의 값이다. 4, 3, 2, 1의 순서대로 주어지지 않을 수 있음에 주의하라. 다음 줄에는 라운드 1에서 어린이 B가 내는 딱지에 나온 그림의 총 개수 b가 주어진다. b도 1 이상 100 이하이다. 뒤따라 나오는 b개의 정수는 어린이 B가 낸 딱지의 그림을 나타내는데, 역시 4, 3, ..

카테고리 없음 2018.06.24

C++ 캐스트 연산자(Cast Operator)

C언어에서의 캐스트 연산자는 아주 간단했다. int a=10;double d;d=(double)a; 이러한 코드의 장점은 사용자가 원하는대로 변수 타입을 변경할 수 있어서 편리하고 코드를 유연하게 짤 수 있고 void* 같은 타입 때문에 필연적으로 사용해야 할 때 사용할 수 있다는 점이다.변환 가능성을 막론하고 작성한 코드 그대로 돌아가기 때문에, 그 자유로움이 프로그램의 안전성을 위협한다. C++에서는 이러한 캐스트 연산자의 단점을 보완하고자 네 가지의 캐스트 연산자를 도입했다. static_castdynamic_castconst_castreinterpret_cast cast_operator (var) static_cast강제 변환이 아닌 논리적으로 변환이 가능한 타입에 대해서 캐스팅 실시함.일반적으로..

백준] 2502 - 떡 먹는 호랑이(KOI 2008 지역본선)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에는 할머니가 넘어온 날 D (3≤D≤30)와 그 날 호랑이에게 준 떡의 개수 K (10≤K≤100,000)가 하나의 빈칸을 사이에 두고 주어진다. 출력첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤A≤B)가 존재한다. 소스코드 #include using namespace std; int main(void) { int first[31] = { 0, 1, 0, }, second[30] = { 0, 0, 1, }; int day, rc; int d1=1, d2=1; int i, j; cin >> day >> rc; for (i =..

백준] 10156 - 과자(KOI 지역본선 2014)

시간 제한 : 1초메모리 제한 : 256MB 입력첫 번째 줄에는 과자 한 개의 가격 K, 사려고 하는 과자의 개수 N, 현재 동수가 가진 돈 M이 각각 공백을 사이에 두고 주어진다. 단, K, N은 1,000 이하의 양의 정수이고, M은 10만 이하의 양의 정수이다. (1 ≤ K, N ≤ 1,000, 1 ≤ M ≤ 100,000이다.) 출력첫 줄에 동수가 부모님께 받아야 하는 돈의 액수를 출력한다. 소스코드 #include using namespace std; int main(void) { int k, n, m; cin >> k >> n >> m; if (k*n > m) cout

728x90