반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 16968번 차량 번호판 1 자바(Java)
1) 문제번호 : 16968번
2) 문제 출처
2. 문제
상도시의 차량 번호판 형식이 주어졌을 때, 가능한 차량 번호판의 개수를 구해보자.
- 번호판에 사용할 수 있는 숫자는 0, 1, 2, ..., 8, 9이다.
- 사용할 수 있는 문자는 a, b, c, d, ..., y, z이다.
- 차량 번호판의 형식은 최대 4글자이고, c와 d로 이루어진 문자열로 나타낼 수 있다.
- c는 문자가 위치하는 자리, d는 숫자가 위치하는 자리이다.
- 같은 문자 또는 숫자가 연속해서 2번 나타나면 안 된다.
예를 들어, 형식이 "cd"이면, a1, d4, h5, k4 등이 가능하다. 형식이 "dd"인 경우에 01, 10, 34, 69는 가능하지만, 00, 11, 55, 66은 같은 숫자가 2번 연속해서 불가능하다.
3. 제약사항
-
4. 입력
첫째 줄에 차량 번호판의 형식이 주어진다. 형식은 길이가 4보다 작거나 같으며, c와 d로만 이루어져 있다.
5. 출력
첫째 줄에 가능한 차량 번호판의 개수를 출력한다.
6. 풀이
- 영문자는 A부터 Z까지 총 26개이다.
- 숫자는 0부터 9까지 총 10개이다.
- 그래서, 문자가 c라면 26C1을 곱해주고, d라면 10C1을 곱해주면 된다.
- 여기서 주의해야 할 점은 cc나 dd가 나올 경우에는 중복되는 수를 줄여서 곱해주면 된다.
- 즉, cc가 나올 경우에는 26C1 X 25C1, dd가 나올 경우에는 10C1 X 9C1을 곱해주면 된다.
7. 소스 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int num = 1;
// 맨처음 처리
String start = s.substring(0, 1);
//c일 경우 26을 곱하고, d이면 10 곱한다.
if (start.equals("c")) num *= 26;
else num *= 10;
for (int i = 0; i < s.length() - 1; i++) {
String a = s.substring(i, i + 1);
String b = s.substring(i + 1, i + 2);
// 앞 문자와 뒷 문자가 c로 같다면 25를 곱하고 아니면 10을 곱한다.
if (a.equals("c")) {
if (a.equals(b)) num *= 25;
else num *= 10;
}
// 앞 문자와 뒷 문자가 d로 같다면 9를 곱하고 아니면 26을 곱한다.
else if (a.equals("d")) {
if (a.equals(b)) num *= 9;
else num *= 26;
}
}
//출력
System.out.println(num);
}
}
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 15489번 파스칼 삼각형 자바(Java) (0) | 2021.04.04 |
---|---|
[백준 알고리즘] 백준 16395번 파스칼의 삼각형 자바(Java) (0) | 2021.04.04 |
[백준 알고리즘] 백준 2407번 조합 자바(Java) (0) | 2021.04.03 |
[백준 알고리즘] 백준 2775번 부녀회장이 될테야 자바(Java) (0) | 2021.04.03 |
[백준 알고리즘] 백준 1292번 쉽게 푸는 문제 자바(Java) (0) | 2021.04.01 |
[백준 알고리즘] 백준 10162번 전자레인지 자바(Java) (0) | 2021.04.01 |
[백준 알고리즘] 백준 13277번 큰 수 곱셈 자바(Java) (0) | 2021.03.31 |
[백준 알고리즘] 백준 10699번 오늘 날짜 자바(Java) (0) | 2021.03.31 |
최근댓글