[BOJ] 1871번: 좋은 자동차 번호판
✔️ 문제
😎 소스 코드
#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;
}
✊ 문제를 풀고 나서
#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를 빼주면 그에 해당하는 알파벳 번호가 나오니깐 이걸 이용해서 계산하면 된다.
Author And Source
이 문제에 관하여([BOJ] 1871번: 좋은 자동차 번호판), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rany/BOJ-좋은-자동차-번호판저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)