[HackerRank] C++ Time Conversion
www.hackerrank.com/challenges/time-conversion/problem Time Conversion | HackerRank Convert time from an AM/PM format to a 24 hour format. www.hackerrank.com 1. 정리 HackerRank의 Time Conversion 문제로, AM/PM 형식의 시간 string을 24시 string형태로 변환하는 문제입니다. 먼저, 입력과 출력의 예시를 보겠습니다. 입력 12:01:00PM 출력 12:01:00 중요한 부분은 위의 입/출력 부분에서 밑줄 표시된 부분입니다. 앞의 숫자를 int로 변환해야 하므로 int 변수와 string 변수를 선언해보겠습니다. s_tmp의 경우 0번 째, index..
2022.02.13
[HackerRank] C++ Staircase
www.hackerrank.com/challenges/staircase/problem Staircase | HackerRank Print a right-aligned staircase with n steps. www.hackerrank.com 1. 정리 HackerRank의 계단식 출력 문제입니다. 먼저, 정수를 입력 받고 staircase 함수에 인자로 전달해줍니다. int n; cin >> n; cin.ignore(numeric_limits::max(), '\n'); staircase(n); staircase 함수는 이 인자를 받아 처리하게 됩니다. 일단, 입력 받은 정수의 수와 계단식 출력의 줄수가 똑같으므로 정수만큼의 반복문을 만들어줍니다. 그리고 공백의 개수와 #의 개수만큼 추가로 출력해줍니다...
2022.02.13
C++ cin, cout 다중 변수 입출력 예제
1. 정리 c++에서 제공하는 cin과 cout에 대한 간단한 예제입니다. c언어에서는 여러 개의 변수를 입력받을 때, 각각의 자료형을 입력해주고 그 자료형에 대한 내용을 파악하고 있어야 했습니다. 그러나 c++에서는 이 부분을 자동적으로 해결해주네요. 그리고 다중 변수 입력 시, 직관적으로 입력받을 수가 있습니다. int형 변수를 3개 선언하고, 입력을 기다려보겠습니다. cin >> a >> b >> c; 의 의미는 a, b, c 순으로 입력을 기다리는 것입니다. 매우 간결하네요. 이 때, 다음과 같이 입력해보죠. 입력 1 1 1 int a, b, c; cin >> a >> b >> c; 이제 입력 받은 내용을 출력해보겠습니다. 형태는 입력 때와 유사합니다. cout을 사용하고 꺽쇠의 모양이 달라졌네요..
2022.02.13
C++ lower_bound, upper_bound 활용하기
1. 정리 c++에서는 이진 검색(Binary Search)를 함수로 제공하고 있습니다. 이상과 초과에 대한 기준으로 두 개를 제공하고 있는데 각각 lower_bound와 upper_bound 입니다. 데이터 양이 적을 경우에는 순차 검색(Sequential Search)과 비교 했을 때, 크게 의미가 없거나 오히려 안좋아질 수도 있지만, 데어터 양이 많을 경우에는 기하급수적으로 성능이 좋아집니다. ( 코딩 문제 사이트에서 순차 탐색을 이용했을 때, 런타임 에러가 발생했으나 이진 검색을 이용하여 풀어보면 해결되는 경우가 많네요. ) ko.wikipedia.org/wiki/%EC%88%9C%EC%B0%A8_%EA%B2%80%EC%83%89_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 ..
2022.02.13
C++ 주요 STL(Standard Template Library) 내용 정리
vector c++ 관련 문서들에는 꼭 vector가 언급된다. 그만큼 c++에서 매우 중요한 역할을 하고 있다고 생각한다. 동적 배열로 객체를 삽입 및 제거하는데, 접근은 배열처럼 간단하고 vector에 대한 수정은 연결리스트처럼 명료하다. vector는 string, int와 같이 단일 자료형을 위해서도 사용이 가능하지만 복수 자료형을 위한 pair나 tuple과 함께 사용 시, 효과가 더욱 증가된다. 개발자가 생각하는 자료형의 배열에 대해 추가, 삭제, 정렬 등이 간단해짐으로서 코드가 매우 간결해진다. 무엇보다 직관적이어서, 협업에 있어서도 매우 편리한 라이브러리다. pair pair는 key, value로 이루어진 자료형이다. pair를 통해, return 값을 2개로 확장시킬 수 있고 함수를 구..
2022.02.13
C++ tuple로 이루어진 vector 요소 추가, 정렬, 출력
1. 정리 tuple은 편리하면서도 상당한 Output을 내주는 라이브러리입니다. 기존에 pair라는 라이브러리가 있었지만 개수가 2개로 제한되어 있었습니다. 하지만, tuple은 3개 이상의 쌍으로 저장이 가능하고 정렬 또한 엑셀처럼 간단하게 구현할 수 있습니다. 먼저, string과 int 쌍의 tuple로 이루어진 vector에 요소들을 추가해보겠습니다. 선언은 pair로 이루어진 vector와 유사하네요. 추가 또한, 함수명은 달라졌지만 직관적이고 어렵지 않습니다. 아래의 문구를 실행하면, { "TEST_1", 1 } 쌍과 { "TEST_1", 2 } 의 쌍이 추가된 것입니다. vector answer; vector v; //추가 v.emplace_back("TEST_1", 1); v.emplac..
2022.02.13
no image
C++ 1, 2차원 vector 선언 및 함수로 인자 전달 후 출력
1. 정리 vector는 크기가 변경될 수 있는 동적 배열입니다. 활용은 배열처럼 간단하게 가능하고, 추가 및 삭제는 연결리스트처럼 유연합니다. 1차원 및 2차원 vector를 선언 및 정의하고 함수로 인자를 전달하여 출력해보겠습니다. 먼저, 1차원 및 2차원 vector를 선언해보죠. v_11에는 {"a", "b", "c"} 가 저장된 1차원 vector입니다. v_22에는 {"a", "aa"} {"b", "bb"} {"c", "cc"} 가 저장된 2차원 vector입니다. vector v_11 = { "a", "b", "c" }; vector v_22 = { {"a", "aa"},{"b", "bb"},{"c", "cc" } }; 다음은 1차원 벡터를 출력하는 함수를 선언해보겠습니다. for문으로 접근..
2022.02.13
C++ map 라이브러리 코드 예제
1. 정리 map 라이브러리는 key값에 따른 value를 저장하고 추가/수정/삭제를 쉽게 처리하도록 도와줍니다. map 라이브러리를 활용하기 위해, 먼저 map을 선언해봅시다. //map 선언 map Map; 선언된 map에 키 값과 키 값에 따른 값을 저장해봅시다. 방법은 2가지인데, 두 번째, 방식이 더욱 직관적이네요. 선호하는 방식에 맞춰 사용하시면 될 듯 합니다. 각각의 Key값는 0과 1을 저장했습니다. //Map 추가방법 Map.insert(make_pair("Key1", 0)); Map["Key2"] = 1; 이제 Key 값에 따라 검색해보겠습니다. 마찬가지로 2가지가 있는데 두 번째, 방식이 더욱 직관적이네요. 출력해보면 위에서 저장했던 값들인 0과 1이 출력됩..
2022.02.13
C++ 함수 오버로딩(Function overloading) 코드 예제
코드 #include "windows.h" #include "stdio.h" double GetMax(double, double); int GetMax(int, int); void main() { int i; double d; i = GetMax(123,456); d = GetMax(1.23, 4.56); printf("\n%d",i); printf("\n%f",d); } double GetMax(double a, double b) { if(a>b) { return a; } else { return b; } }; int GetMax(int a ,int b) { if(a>b) { return a; } else { return b; } };
2022.02.13