개발

백준 15813번 너의 이름은 몇 점이니?

백인성(GGM) 2024. 3. 10. 02:13

https://www.acmicpc.net/problem/15813

 

15813번: 너의 이름은 몇 점이니?

소윤이는 성필이에게 단단히 화가 났다. 성필이가 자꾸 소윤이의 이름을 놀리는 것이다! 극대노한 소윤이는 이름에 대해 많은 검색을 하던 도중 "이름점수"라는 것을 발견하게 된다. 이름 점수

www.acmicpc.net

이 문제에서 중요하게 봐야 할 점은 알파벳순으로 점수가 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