본문 바로가기

전체 글

(209)
[프로그래머스] (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으로 선언된 정적 ..
[openssl] AES 암호화 / 복호화 (C++ 사용) AES 짤막한 소개 AES는 Advanced Encryption Standard 라고 해서 요즘 보편적으로 쓰이는 암호화 방식이다. AES는 사용하는 key size (bits) 에 따라 AES-128, AES-192, AES-256 으로 나뉜다. AES에서 암호화할 데이터는 128 bits (16 bytes) 로 된 block 들로 나뉘게 된다. 마지막 블럭이 128 bits 로 딱 떨어지지 않으면 padding 되어 128 bits로 만든다. AES와 같은 블럭 알고리즘은 여러 모드 (CBC, CFB, ECB 등) 가 존재하는데 CBC가 Chain 형식으로 꽤 안전하다. openssl 유틸리티를 사용해서 암호화 (AES-256 CBC 방식) $ openssl enc -aes-256-cbc -in (i..
[bash] 문자열 다루기 "ABCDEFG" 라는 문자열이 있을 때 #!/bin/bash STR="ABCDEFG" 1. ABCD를 자르고 EFG만 쓰고 싶다면 STR=${STR:4} # 또는 STR=${STR:-3} 2. EFG를 자르고 ABCD만 쓰고 싶다면 STR=${STR:0:4} 3. 문자열의 길이를 알고 싶다면 LENGTH=${#STR}
[프로그래머스] (C++) 체육복 문제는 이 링크를 타고 가면 있습니다. 이 문제는 정렬을 필요로 합니다. 왜일까요? #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = 0; sort(lost.begin(), lost.end()); sort(reserve.begin(), reserve.end()); vector::iterator lost_iter, res_iter; lost_iter = lost.begin(); res_iter = reserve.begin(); while ((lost_iter != lost.end()) && (res_iter != reserve.end())) { if (*lo..
[프로그래머스] (C++) 땅따먹기 문제는 이 주소로 가면 있습니다. 처음에 저는 아래와 같은 코드로 문제를 푸려고 하였습니다. #include #include using namespace std; vector gLand; int gMax; void getTotal(int cur, int last, int n, int total) { if (cur == n) { if (gMax < total) gMax = total; return; } for (int i = 0; i < 4; i++) { if (last != i) { getTotal(cur+1, i, n, total + gLand[cur][last]); } } } int solution(vector land) { gLand = land; for (int i = 0; i < 4; i++) ..