문제정보
1s 128MB
문제
문자 n개가 주어졌을 때, 각 문자의 아스키 코드 값을 출력한 후, 모든 문자의 아스키 코드 값의 합을 출력하는 프로그램을 작성하시오.
입력형식
첫째 줄에 문자의 개수 n이 입력된다. (1≦n≦100)
두 번째 줄에 문자 c가 공백으로 구분되어 n개 입력된다.
두 번째 줄에 문자 c가 공백으로 구분되어 n개 입력된다.
출력형식
첫 줄에 각 문자의 아스키 코드 값을 공백으로 구분하여 출력한다.
두 번째 줄에 모든 문자의 아스키 코드 값의 합을 출력한다.
두 번째 줄에 모든 문자의 아스키 코드 값의 합을 출력한다.
힌트
아스키코드는 특정 문자와 수를 연결하여 문자를 표현하는 방식 중의 하나이다. 예를 들어, ‘a’는 98, ‘b’는 99로 표현하기로 약속한다. (아스키 코드표 참고: https://ko.wikipedia.org/wiki/ASCII)
컴퓨터에서 아스키코드를 활용하여 문자를 저장하고 출력하는 과정을 살펴보자.
char c = ‘a’ 라고 선언하면 변수 c에는 문자 ‘a’ 의 아스키 코드 값인 98로 변환되어 저장된다.
반대로, 변수 c의 값을 출력하면 아스키코드 98에 해당하는 문자 ‘a’가 출력된다. 이 때, 아스키코드 98에 해당하는 문자를 출력하는 이유는 변수의 자료형이 문자형인 char형이기 때문이다. 해당 자료형에 맞게 출력값을 변환하는 것이다.
int c = ‘a’라고 선언해도 변수 c에는 문자 ‘a’의 아스키 코드 값인 98로 변환되어 저장되지만, 변수 c의 값을 출력하면 아스키 코드 값 98이 그대로 출력된다. 변수의 자료형이 정수형인 int형이기 때문이다. 따라서, int형 변수 c를 (char) c와 같이 char형으로 캐스팅하면 아스키코드 98에 해당하는 문자 a를 출력할 수 있고, char형 변수 c를 (int) c와 같이 int형으로 캐스팅하면 아스키코드 값을 그대로 출력할 수 있다.
또한, 문자는 아스키코드 값으로 저장되므로 ‘a’+’b’의 결과는 ‘a’와 ‘b’의 아스키코드 값 98+99가 된다.
이 문제에서 char c로 선언하는 대신 int c로 선언하면 캐스팅할 필요가 없다.
컴퓨터에서 아스키코드를 활용하여 문자를 저장하고 출력하는 과정을 살펴보자.
char c = ‘a’ 라고 선언하면 변수 c에는 문자 ‘a’ 의 아스키 코드 값인 98로 변환되어 저장된다.
반대로, 변수 c의 값을 출력하면 아스키코드 98에 해당하는 문자 ‘a’가 출력된다. 이 때, 아스키코드 98에 해당하는 문자를 출력하는 이유는 변수의 자료형이 문자형인 char형이기 때문이다. 해당 자료형에 맞게 출력값을 변환하는 것이다.
int c = ‘a’라고 선언해도 변수 c에는 문자 ‘a’의 아스키 코드 값인 98로 변환되어 저장되지만, 변수 c의 값을 출력하면 아스키 코드 값 98이 그대로 출력된다. 변수의 자료형이 정수형인 int형이기 때문이다. 따라서, int형 변수 c를 (char) c와 같이 char형으로 캐스팅하면 아스키코드 98에 해당하는 문자 a를 출력할 수 있고, char형 변수 c를 (int) c와 같이 int형으로 캐스팅하면 아스키코드 값을 그대로 출력할 수 있다.
또한, 문자는 아스키코드 값으로 저장되므로 ‘a’+’b’의 결과는 ‘a’와 ‘b’의 아스키코드 값 98+99가 된다.
이 문제에서 char c로 선언하는 대신 int c로 선언하면 캐스팅할 필요가 없다.
int n;
char c;
int sum = 0;
cin >> n;
for(int i=0; i<n; i++){
cin >> c;
cout << (int) c << ' '; // c에 입력된 아스키코드 값을 문자로 출력하지 않고 정수형으로 출력
sum += c;
}
예시 1
입력예시
1 a
출력예시
97 97
예시 2
입력예시
2 a b
출력예시
97 98 195