https://www.acmicpc.net/problem/15813
코드 (C)
#include <stdio.h>
int main()
{
int n, result=0;
scanf("%d", &n);
char name[101];
scanf("%s", &name);
for (int i = 0; i < n; i++) result += (int)(name[i] - 64);
printf("%d", result);
return 0;
}
코드 (C++)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string name;
int result = 0, n;
cin >> n;
cin >> name;
for (int i = 0; i < n; i++) result += (int)(name[i] - 64);
cout << result;
return 0;
}
코드설명
이름들이 모두 대문자로 작성되었고, A가 1, Z가 26임을 고려해서 코드를 작성한다.
이름의 길이를 입력받은 후 이름을 입력받는다.
이름의 길이만큼 반복문을 도는데, 이름 철자 하나하나 철자의 아스키코드에서 64를 뺀 값을 int로 타입 캐스팅 후 결과에 더해나간다.
반복문을 끝낸 후 결과를 출력하고 프로그램을 종료한다.
느낀 점
타입 캐스팅을 사용한 것은 철자의 값(숫자)이 더해나가는 그 순간에만 필요하기 때문이다. 아스키코드와 타입 캐스팅을 이용해 금방 풀었다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 2577 숫자의 개수 (0) | 2022.09.15 |
---|---|
[백준/C & C++] 25305 커트라인 (0) | 2022.09.15 |
[백준/C & C++] 5565 영수증 (0) | 2022.09.07 |
[백준/C & C++] 2851 슈퍼마리오 (0) | 2022.09.05 |
[백준/C & C++] 1259 펠린드롬수 (0) | 2022.09.05 |