본문 바로가기

삼성SW아카데미5

5607. 조합 n^{p} \equiv n \left(\text{mod}\ p \right) N combination R의 값을 1234567891로 나눈 나머지를 출력. 즉, 우리에게 익숙한 nCr을 1234567891로 나눈 나머지를 출력하란 말이다. nCr을 구하는 공식을 보면 이다. 하지만 나머지 연산은 나눗셈에 적용할 수 없다. 그래서 이 식을 곱셈 형태로 바꿔줘야 하는데 여기서 사용되는 것이 페르마의 소정리이다. 페르마의 소정리에 의해서 P를 1234567891이라고 하면 가 성립한다. 제곱의 경우는 분할 정복을 통해서 O(logP)의 시간복잡도 안에 해결할 수 있기 때문에 해결이 가능하다. 123456789101112131415161718192021222324252627282930313233343536373.. 2020. 4. 4.
1859. 백만장자 프로젝트 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 링크 난이도 D2 문제 중 정답률이 가장 낮은 문제다. 접근 방식의 전환이 필요한 문제인듯 하다. 앞에서 뒤로 탐색을 하는 것이 아니라 뒤에서 앞으로 탐색을 하면서 값을 갱신해야한다. #include #include #define ll long long using namespace std; int arr[1000001], tmp[1000001]; int N; int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T; cin >> T; for (int tc = 1; tc > N; for (int i .. 2020. 2. 12.
2383. [모의 SW 역량테스트] 점심 식사시간 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 링크 : 2383. [모의 SW 역량테스트] 점심 식사시간 (로그인 필요) N*N크기 맵에 2개의 계단, 사람들이 주어진다. 계단은 길이가 존재하고, 계단에는 최대 3명이 올라갈 수 있다. 이러 계단을 이용해서 모든 사람들이 내려갔을 때 최소시간을 구하면 된다. 여러 풀이 방법이 있겠지만, 직관적으로 생각하기 좋은 방법은 "조합 + 시뮬레이션"일 것 같다. 조합을 통해 사람들을 2개의 그룹으로 나눠 계단을 내려가는 시뮬레이션을 진행하였다. 여기서 주의 할 점은 1. 계단은 최대 3명이 이용할 수 있다. 2. 계단에 도착 후 다음 시간(초)에 계단에 진입한다. 3... 2020. 2. 12.
1770. [SW Test 샘플문제] 블록 부품 맞추기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 링크 : 1770. [SW Test 샘플문제] 블록부품 맞추기 main을 보면 블록의 높이는 1~8인 것을 알 수 있다. int max_ =1+ (rand() % 6); module[c][y][x] = max_ + (rand() % 3); 블록 모양을 배열이 아닌 다른 방법으로 저장해서 빠르게 연산할 방법으로 16자리 10진수 각각의 자리에 높이를 저장하였다. (친구가 도움을 준 아이디어) 예를 들어 위 모양의 블록을 long long shape = 3222122313132231; 이런식으로 저장을 했다. 이런식으로 원래 모양을 저장하고 블록을 맞춰 끼우기 위해선.. 2019. 9. 26.