BOJ_16968_차량 번호판1

2021. 9. 7. 09:12백준 알고리즘(BOJ)

1

구분: brute-force

언어: java

전략:

  • 코드를 짠다고 생각하지 말고, 수학 문제를 푼다고 생각해보자
  • 숫자는 10가지, 문자는 26가지가 있다.
  • **** - 각 자리에 들어갈 수 있는 문자나 숫자는 내 바로 앞것과 같지만 않으면 된다 --> 즉, 내 앞꺼랑만 다르면 된다
  • 따라서 내 앞이 숫자면, 그 다음에는 그것만 아니면 되고(9가지), 문자이어도 동일하다(25)가지
  • 내 앞의 것을 살피고, 단 한개와만 같지 않게 구한다. 

2. 코드

import java.util.Scanner;
public class Main {
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String str = scanner.next();
		char[] carnum = new char[str.length()];
		for(int i = 0; i<carnum.length; i++) {
			carnum[i] = str.charAt(i);
		}
		//정답
		int result = 1;
        
        //맨 처음에 c라면 
		if(carnum[0]=='c') 
			result*= 26;	
		else //d라면 
			result*= 10;
		
		for(int i = 1; i<carnum.length; i++) {
			//이전것과 같다면 count를 1감소
			if(carnum[i]==carnum[i-1]) {
				if(carnum[i]=='c')
					result*=25;
				else
					result*=9;
			}
			//같지 않아 -> count를 현재의 값으로 초기화
			else {
                //지금이 c라면
				if(carnum[i]=='c')
					result*=26;
				
				else //d라면 
					result*=10;
			}
		}
		System.out.println(result);
	}
}

3

  • brute-force라고 해서 그냥 순열 조합부터 만들어버렸다 --> 좀 더 살펴보자 
  • 실제 수학 문제를 푸는 것처럼 문제에 접근하였다.
  • 연속되는 ddd나 ccc같은 경우 모두가 달라야 한다고 생각해서 계속 오답이었다.--> 정답을 앞에것만 달라도 된다. 

 

'백준 알고리즘(BOJ)' 카테고리의 다른 글

BOJ_2644_촌수계산  (0) 2021.09.15
BOJ_2529_부등호  (0) 2021.09.08
BOJ_7568_덩치  (0) 2021.09.01
BOJ_17070_파이프 옮기기1  (0) 2021.08.20
BOJ_1987_알파벳  (0) 2021.08.19