[BOJ] 1871번: 좋은 자동차 번호판

HyeRyun·2020년 11월 9일
0

Baekjoon Online Judge

목록 보기
7/30

✔️ 문제

😎 소스 코드

#include <iostream>
#include <string>
#include <vector>
#include <cmath>

using namespace std;

void solution(int n, vector<string> v){
  for (int j = 0; j < n; ++j) {
    string answer = "", tempStr = "";
    int numFront = 0, numRear = 0, getAlphaNum = 0;

    for (int k = 0; k < 8; ++k) {
      // 번호판 앞의 세 문자열 계산
      for (int m = 2; m >= 0; --m) {
        getAlphaNum = (int(v[j][m]) - 65) * pow(26, k);
        numFront += getAlphaNum;
        k++;
      }
      
      // 번호판 뒤의 네 문자열 숫자로 변환
      for (int y = 4; y < 8; ++y) {
        tempStr += v[j][y];
        k++;
      }
      numRear = stoi(tempStr);
      
      // 좋은 번호인지 판별
      if (abs(numFront - numRear) <= 100){
        answer += "nice";
      } else {
        answer += "not nice";
      }
    }
    
    cout << answer << endl;
  }
}

int main(){
  int n;
  vector<string> v;
  string input;
  
  cin >> n;
  
  for (int i = 0; i < n; ++i) {
    cin >> input;
    v.push_back(input);
  }
  
  solution(n, v);
  
  return 0;
}

✊ 문제를 풀고 나서

아스키 코드를 이용해서 풀었다.
대문자 'A'는 65.
각 문자열 원소에 65를 빼주면 그에 해당하는 알파벳 번호가 나오니깐 이걸 이용해서 계산하면 된다.

profile
개발개발

0개의 댓글