본문 바로가기

C++6

[BOJ] 2608번: 로마 숫자 2608번: 로마 숫자 어렵다고 생각했는데 어떻게 변수를 잘 저장하고 사용하느냐를 물어보는 듯한 문제였다. token[][3] = {"IV", "XL", "CD", "M"}; 이렇게 저장하는 게 핵심이었던 것 같다. 코드 #include using namespace std; char s[11], token[][3] = {"IV", "XL", "CD", "M"}; // 4, 40, 400, 1000 int roman[90], ans = 0; const int divs = 1000, zerocnt = 3; int main() { cin.tie(0); ios_base::sync_with_stdio(false); roman['I'] = 1, roman['V'] = 5, roman['X'] = 10, roman[.. 2018. 7. 12.
[BOJ] 2607번: 비슷한 단어 2607번: 비슷한 단어 문제 요약 조건에 따라 첫 번째 단어와 비슷한 단어의 개수를 출력한다. 조건 같은 구성이란: 두 단어가 같은 종류의 문자로 이루어져 있다. 같은 문자는 같은 개수만큼 있다. 같은 종류의 문자가 같은 개수만큼 있거나, 한 단어에서 문자를 더하거나 빼거나 한 문자를 다른 문자로 바꾸거나 해서 같은 구성을 만들면 비슷한 단어로 취급한다. 단어의 변형을 한 번만 할 수 있기 때문에 단어의 길이 차이가 1 이하여야 한다. 그리고 문자 차이가 2개 이하여야 한다. BOJ, BOI 두 단어가 있을 때, 문자의 차이는 2개다. 그렇지만 I를 J로 바꿔주면 비슷한 단어가 된다. 코드 #include using namespace std; int n, ans = 0; bool check(const .. 2018. 7. 12.
2의 2000승 출력하기(C/C++) 2의 2000승 출력하기 설명 2천승이기 때문에 밖에 for문에서 2천 번 돌려주고 안에서는 곱하면서 받아 올림해주면 된다. 마지막으로 배열로 따지면 뒤에서부터 출력하면 된다. 코드 #include int main() { int digit[603] = { 0, }; digit[0] = 1; for (int i = 0; i = 10) { digit[j + 1] += digit[j] / 10; digit[j] %= 10; } } } for (int i = 602; i >= 0; --i) { printf("%d", .. 2018. 5. 15.
거듭제곱 빠르게 계산하기 Using loop unsigned long long pow(unsigned long long base, int exp) { long long ans = base; for (int i = 1; i < exp; ++i) { ans *= base; } return ans; } 하지만 xnx^nxn에서 nnn이 굉장히 커졌다고 생각했을 때는 이 방법은 굉장히 느리다. Using Recursive Function unsigned long long pow(unsigned long long base, int exp) { if (exp == 0) return 1; if (exp & 1) return base * pow(base * base, (exp - 1) / 2); else return pow(base * bas.. 2018. 5. 7.
선형 구조의 탐색 선형 구조의 탐색 이번 글은 선형 구조란 무엇이고 선형 구조 속에서 탐색하는 대표적인 방법 2가지를 설명한다. 선형 구조란? 선형 구조란 프로그래밍 언어를 배울 때 배우는 배열, 연결 리스트 같은 말 그대로 선 같이 생긴 데이터 구조를 선형 구조라고 한다. 반대로 비선형 구조는 트리, 그래프 등이 있다. [배열] - 대표적인 선형 구조 [연결 리스트] - 얘도 선형 구조다. 선형 탐색 선형 탐색에는 대표적으로 전체 탐색과 이분 탐색(이진 탐색)이 있다. 전체 탐색은 말 그대로 전체를 순환해서 어떠한 값을 찾는 것을 말하고 이분 탐색은 정렬된 선형 구조에서 부분적으로만 탐색을 해서 값을 찾는 부분 탐색을 말한다. 구체적인 예시와 설명을 보면서 설명하면 좋을 것 같다. 전체 탐색 전체 탐색은 전체를 순환하기.. 2018. 5. 5.
string타입의 메소드 c_str() 함수 string 타입에서는 C 스타일의 문자열 변환 메서드를 지원하는데 바로 그 함수가 c_str()이다. c_str()의 사용법( 헤더를 포함해야 한다.) string str = "Hello"; const char* cstr = str.c_str(); const char*로 해야하는 이유는 c_str()의 반환형이 const char*이기 때문이다. data() 함수 또한 data()라는 함수는 char* 타입을 리턴한다. string str = "HELLO"; char* ccstr = str.c_str(); 문자열의 타입 추론 문자열 리터럴은 원래 const char* 타입으로 인식된다. 그래서 auto를 사용해서 문자열을 만들 때 s를 붙이지 않으면 const char* 타입으로 인.. 2018. 5. 2.