백준의 차량 번호판1(16968) 문제이다.
[ 문제 바로가기 ]
[ 문제풀이 ]
1) 단순 시뮬레이션 문제이다. 숫자든 문자든 연속하게만 나오지 않게 하면서 나올 수 있는 모든 경우의 수를 모두 구하는
것이 문제이다.
먼저 숫자는 총 10개가 있다.(0 ~ 9) 그리고 문자는 총 26개가 있다.(a ~ z)
주의해야 할 점은 이런 부분이다.
예를 들어서 'ccc'가 입력될 경우, 경우의 수가 26 x 25 x 24가 아닌, 26 x 25 x 25 가 될 수 있다는 것이다.
연속되지만 않으면 되기 때문에 저 'ccc'부분에 'aba'와 같은 경우가 가능하다는 것이다.
사실 별다른 설명보다는 소스코드를 참고하는 것이 더 편한 문제일 거라 생각한다..
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include<iostream> #include<string> #define endl "\n" using namespace std; string Inp; void Input() { cin >> Inp; } void Solution() { int C = 26; int D = 10; int Answer = 1; for (int i = 0; i < Inp.length(); i++) { if (Inp[i] == 'c') { if (i - 1 >= 0) { if (Inp[i - 1] == 'c') { Answer = Answer * (C - 1); } else { Answer = Answer * C; } } else { Answer = Answer * C; } } else { if (i - 1 >= 0) { if (Inp[i - 1] == 'd') { Answer = Answer * (D - 1); } else { Answer = Answer * D; } } else { Answer = Answer * D; } } } cout << Answer << endl; } void Solve() { Input(); Solution(); } int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("Input.txt", "r", stdin); Solve(); return 0; } | cs |
'[ BOJ Code ] > # BOJ -' 카테고리의 다른 글
[ 백준 5430 ] AC (C++) (2) | 2019.08.28 |
---|---|
[ 백준 14391 ] 종이 조각 (C++) (2) | 2019.08.01 |
[ 백준 16973 ] 직사각형 탈출 (C++) (0) | 2019.08.01 |
[ 백준 16937 ] 두 스티커 (C++) (0) | 2019.08.01 |
[ 백준 16960 ] 스위치와 램프 (C++) (0) | 2019.07.12 |