728x90
반응형
1. 문제
https://www.acmicpc.net/problem/15829
2. 접근 방식
- 1차 : 문제에서 알려준 공식대로 구현 -> 50점, 작은 문자열에서는 잘 동작하지만 큰 문자열에서는 시간초과
- 2차 : 합동식 활용 A * B mod C -> (A mod C) * (B mod C) -> 통과
3. 코드
- 1차 코드
#include<iostream>
#include <cmath>
typedef unsigned long long ll;
using namespace std;
int main() {
int str_len;
cin >> str_len;
string str;
cin >> str;
int a, r = 31, M = 1234567891;
ll sum = 0;
for (int i = 0; i < str_len; i++) {
a = (str[i] - 'a') + 1;
sum += a * pow(r, i);
}
cout << sum % M << "\n";
}
- 2차 코드
#include<iostream>
using namespace std;
typedef unsigned long long ll;
int main() {
int str_len;
cin >> str_len;
string str;
cin >> str;
ll r, sum = 0, a;
int M = 1234567891;
for (int i = 0; i < str_len; i++) {
a = (str[i] - 'a') + 1;
r = 1;
for (int j = 0; j < i; j++) {
r *= 31;
r %= M;
}
sum += a * r;
sum %= M;
}
cout << sum;
}
4. 결과
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 1463번 - 1로 만들기 (실버 3) (0) | 2022.04.04 |
---|---|
[백준] 10026번 - 적록색약 (골드 5) (0) | 2022.04.04 |
[백준] 10773번 - 제로 (실버 4) (0) | 2022.03.15 |
[백준] 18111번 - 마인크래프트 (실버 2) (0) | 2022.03.14 |
[백준] 1009번 - 분산처리 (브론즈 3) (0) | 2022.03.10 |
[백준] 삼성 SW 역량 테스트 기출 문제 (작성중) (0) | 2022.02.22 |
댓글