본문 바로가기

분류 전체보기

(189)
[프로그래머스] (C++) 최댓값과 최솟값 문제 소개 문제는 이 링크를 따라가시면 있습니다. 소스 #include #include using namespace std; string solution(string s) { string answer = ""; istringstream iss{s}; string numStr; int num; vector intVec; while (std::getline(iss, numStr, ' ')) { num = std::stoi(numStr); intVec.push_back(num); } int max = *std::max_element(intVec.begin(), intVec.end()); int min = *std::min_element(intVec.begin(), intVec.end()); answer = s..
[프로그래머스] (C++) 단체사진 찍기 예제 테스트 방법 input.txt 2 2 [N~F=0, R~T>2] 2 [M~C\1] main.cc int main () { int T; int n; std::string line; std::freopen("input.txt", "r", stdin); std::cin >> T; std::vector data; for (int i = 0; i > n; for (int j = 0; j > line; if (j == 0) { line.erase(0, 1); } line.erase(line.end()-1); data.push_back(line); } std::cout
[프로그래머스] (C++) 단체사진 찍기 문제는 이 링크를 타고 가시면 있습니다. 힌트 이 문제는 완전탐색 문제 입니다. 이 문제는 std::next_permutation 함수를 사용하여 벡터를 ascending order 에서 descending order로 한번 한번 보낼 수 있습니다. // while(vector.next_permutation()) 사용 int형 숫자와 char형 글자를 비교하지 않도록 주의하세요. 예.) if (0 == '0') 소스 코드 #include #include #include #include #include using namespace std; int solution(int n, vector data) { int answer = 0; vector line{'A', 'C', 'F', 'J', 'M', 'N', '..
[OpenSSL/Crypto++] (AES 암호화/복호화) 패딩 (padding) 이란? 패딩의 정의 암복화 알고리즘 경우 input 데이터의 길이는 block size의 배수가 되어야 한다. 하지만, 데이터의 길이가 block size의 배수가 아닌 경우 마지막 블록에 값을 추가해 block size의 배수로 맞춘다. 이때, 추가 되는 행위 또는 값을 padding 이라고 한다. 패딩의 종류 PKCS5: 8바이트 블록 사이즈에 맞추어져 패딩이 들어갑니다. 그리고 그 값으로 몇 바이트를 패딩으로 채웠는지 적혀 있습니다. AA 07 07 07 07 07 07 07 [1 바이트 데이터 + 7 바이트 패딩] AA BB CC DD 04 04 04 04 [4 바이트 데이터 + 4 바이트 패딩] 08 08 08 08 08 08 08 08 [0 바이트 데이터 + 8 바이트 패딩] PKCS5의 경우 무조건..
[프로그래머스] (C++) 숫자의 표현 문제는 이 링크를 타고 가시면 있어요! 이 문제는 비교적 간단하게 풀었어요 힌트: 컴퓨터는 사람이 귀찮아 하는 반복적인 수학 계산을 대신 잘해주죠. #include int solution(int n) { int answer = 0; int addNum; int total; for (int i = 1; i = n) break; addNum++; } } return answer; }
[C++] std::max, std::max_element 또는 std::sort 에서 compare 함수의 역할 template T max( std::initializer_list ilist, Compare comp ); std::initializer_list 관련해서는 다른 문서를 읽어보면 좋아요. template ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp ); ForwardIt는 한쪽 방향으로만 전진하는 Iterator를 뜻합니다. template void sort( RandomIt first, RandomIt last, Compare comp ); RandomIt는 ..
[프로그래머스] (C++) 프린터 문제는 이 링크를 타고 가시면 있습니다. 저는 이 문제를 풀면서 다음 세가지를 생각해보았습니다. 문제에서 나온 로직 자체를 프로그래밍 하면 계산 시간이 너무 오래 걸린다. 어떤 꼼수가 없을까? 굳이 번호를 뒤로 가져다 붙인다고 생각하기보다 번호를 가리키는 화살표가 있어서 한칸 씩 움직이고 끝까지 갔을 때는 다시 돌아오면 되지 않을까? 다음과 같은 코드로 문제를 해결하였습니다. #include #include #include using namespace std; bool compare(const int & a, const int & b) { return (a < b); } int solution(vector priorities, int location) { int answer = 0; vector::ite..
[C++] 클래스 멤버 함수 (class member function) 를 static (정적) 으로 선언 하는 이유 본론으로 가기 전에 정적 멤버 변수 (class member variable) 부터 보도록 하겠습니다. 정적 멤버 변수는 전역 변수와 저장원리가 같습니다. 정적 멤버 변수는 클래스 외부 (file scope) 단위로 초기화 되어야 합니다. 글로벌 변수를 초기화 하는 것처럼. 소스 코드 파일 (.cc) 내 함수 외부에서 int class::variable = 0 이런식으로 초기화 되어야 합니다. private로 선언한 정적 멤버 변수 역시 같은 방법으로 초기화 되어야 합니다. private 클래스 멤버의 경우 클래스 함수 내에서만 접근 가능하지만 이같이 소스 파일에 적어 초기화를 할 때만 예외를 둡니다. 정적 멤버 변수는 클래스 내 모든 객체가 공통으로 사용 할 수 있습니다. public으로 선언된 정적 ..