본문 바로가기

전체 글

(774)
wchar_t 사용과 관련하여. [1. 개요]윈도우 환경에서 wchar_t 에 관련 된 여러 연산 들 중, 아래와 같은 연산 결과가 예상과 다름.iswdigitiswalphaiswalnum한글 '안' 을 유니코드로 표현하면, 10진수로 50504 이며,이는 기존 아스키 코드로 표현가능한 숫자, 영문이 아님을 알 수 있지만, 위 함수들의 결과는 숫자, 알파벳이라고 그 결과를 반환한다. 또, wstring 에 대해서, std::wcout 등을 통해 출력해도 정상적으로 문자열이 출력되지 않았음. 해결 방법을 알아보던 중, locale 을 제대로 설정하지 않았다는 것을 보았고, 그 밖에 관련된 것들이 아래와 같은데,std::locale() SetConsoleOutputCP(CP_UTF8);std::locale::global(std::local..
포함-배제의 원리. [16565] [1. 문제 설명]https://www.acmicpc.net/problem/16565[2. 풀이 접근]여러 집합의 합집합의 원소 수를 셀 때,각 집합의 크기를 더한 뒤 겹치는 부분(교집합)을 빼거나 더하는 과정을 반복하여 정확한 전체 개수를 구하는 방법. 가령, 1이상 100 이하의 자연수 집합에서 2 또는 3의 배수의 개수를 구해야 할 때,2의 배수 개수를 구하고, 3의 배수를 구하여 서로 더하면,6의 배수가 중복되어 더해진다. (교집합이 되어버림) 따라서, 6의 배수 개수를 전체 결과에서 빼야 정확한 개수를 구할 수 있다.[3. 코드]
파스칼 삼각형 [1. 개요]파스칼의 삼각형은 이항계수, 조합(Combination) 과 본질적으로 그 의미가 같다. 특히, 경우의 수를 계산해야 할 때 그 수식 계산을 직접 구현해야하는 경우가 번거로울 수 있다.특히, mod 연산을 해야하는 경우라면 난이도가 더 올라가게 됨.페르마 소정리를 적용해야 하기에..그러나, 이러한 계산을 파스칼의 삼각형을 구하듯 계산하면 그 난이도가 조금 더 쉬워진다.단순 덧셈 연산만 존재하기에 mod 연산의 분배법칙이 조금 더 수월하게 된다. 따라서, 파스칼 삼각형을 이용하여 이항계수를 계산하도록 하는 편이 조금 더 나을지도 모르겠다.(n, k) 에서 n 이 너무 커지면 적용하기 어려울지도,n 에 해당하는 배열을 할당 할 수 없음. (이 경우는 직접 계산하는 방식으로 접근해야 함.)예제 ..