https://www.acmicpc.net/problem/15813
이 문제에서 중요하게 봐야 할 점은 알파벳순으로 점수가 1 증가한다는 것이다.
그럼 점수를 어떻게 부여하느냐 그건 간단하다.
C++에서 char 자료형을 int 형식으로 바꿀 수 있는데
여기서 바꿀 경우 아스키코드의 10진수로 바뀌어 나오게 된다.
예시로
#include <iostream>
using namespace std;
int main(){
char c;
int a;
c = 'A';
a = c;
cout << a;
}
위와 같은 코드를 실행할 경우 실행 결과로 65가 나오게 되는데 그 이유는
A라는 문자가 아스키코드에서 10진수로 65이기 때문이다.
위에 아스키코드를 봤을 때 A 는 65 B는 66인 것을 보아 아스키코드에서도 알파벳순으로 1씩 증가하는 것을 볼 수 있다.
그럼 이제 구현은 간단하다.
입력받은 이름을 알파벳 단위로 쪼개어 64를 빼준다면
A = 1
B = 2
로 이름의 점수와 똑같이 나올 것 이고 이것을 다 더하면
답이 구해질 것이다.
아래가 내가 구현한 코드이다.
#include <iostream>
using namespace std;
int main()
{
int nameL, point = 0;
string name;
cin >> nameL >> name;
for (int i = 0; i < nameL; ++i)
{
point += name[i] - 64;
}
cout << point;
}
마무리
문자형을 int 형식으로 바꾸면 아스키코드의 10진수가 들어가게 된다.
반응형
'개발' 카테고리의 다른 글
C++ 열거형 (0) | 2024.03.19 |
---|---|
C++ 문자열 (0) | 2024.03.12 |
C++ 이름 입출력으로 C++ 맛보기 (0) | 2024.03.08 |
C++ 첫 걸음 (2) | 2024.03.05 |
코드 최적화 : for문 (2) | 2023.11.04 |