● 문제 접근 과정
방법 1. if,else문을 이용하여 하나하나 다이얼에 맞는 조건에 따라 시간이 증가하게 끔 구현
방법 2. 좀더 간단한 방법이 없을까 생각 중 '퉁이리'님의 블로그를 확인하여 방법을 얻어 구현
방법 3. 친구의 코드를 보고 가져온 풀이법
● 구현
방법 1.
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
int time = 0;
getline(cin, str);
for (int i = 0; i < str.length(); i++) {
if (str[i] >= 65 && str[i] <= 67) {
time += 3;
} else if (str[i] >= 68 && str[i] <= 70) {
time += 4;
} else if (str[i] >= 71 && str[i] <= 73) {
time += 5;
} else if (str[i] >= 74 && str[i] <= 76) {
time += 6;
} else if (str[i] >= 77 && str[i] <= 79) {
time += 7;
} else if (str[i] >= 80 && str[i] <= 83) {
time += 8;
} else if (str[i] >= 84 && str[i] <= 86) {
time += 9;
} else if (str[i] >= 87 && str[i] <= 90) {
time += 10;
}
}
cout << time;
return 0;
}
방법 2.
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
int time = 0;
getline(cin, str);
for (int i = 0; i < str.length(); i++) {
time += ((int)str[i] - 65) / 3 + 3;
if (str[i] == 'S' || str[i] == 'V' || str[i] == 'Y' || str[i] == 'Z')
time--;
}
cout << time;
return 0;
}
방법 3.
#include <iostream>
using namespace std;
int main()
{
char arr[9][4] = {{'A', 'B', 'C'}, {'D', 'E', 'F'}, {'G', 'H', 'I'}, {'J', 'K', 'L'}, {'M', 'N', 'O'},
{'P', 'Q', 'R', 'S'}, {'T', 'U', 'V'}, {'W', 'X', 'Y', 'Z'}};
char in[16] = {};
cin >> in;
int sum = 0;
for(int i=0;in[i]!='\0';i++){
for(int j=0;j<9;j++){
for(int k=0;k<4;k++){
if(in[i] == arr[j][k])
sum += j + 3;
}
}
}
cout << sum;
return 0;
}
● 함수& 아스키코드
`std::string` 클래스는 C++에서 문자열을 다루는 데 사용되는 표준 라이브러리 클래스입니다. `length()` 함수는 이 클래스의 멤버 함수 중 하나로, 해당 문자열의 길이(문자의 개수)를 반환합니다.
예를 들어:
#include <iostream>
#include <string>
int main() {
std::string myString = "Hello, World!";
// 문자열의 길이 출력
std::cout << "문자열의 길이: " << myString.length() << std::endl;
return 0;
}
이 코드에서 `myString.length()`는 문자열 "Hello, World!"의 길이를 반환하게 됩니다. `length()` 함수는 문자열의 끝을 나타내는 널 문자('\0')를 제외한 문자의 개수를 반환합니다.
또는 `size()` 함수도 같은 역할을 합니다. 따라서 아래와 같이 사용할 수 있습니다:
std::cout << "문자열의 길이: " << myString.size() << std::endl;
두 함수(`length()`와 `size()`)는 동일한 기능을 수행하며, 문자열의 길이를 반환합니다. 이 중 하나를 사용해도 됩니다.
아스키코드(ASCII 코드)는 컴퓨터에서 문자를 숫자로 표현하기 위한 표준 코드 체계입니다. ASCII는 "American Standard Code for Information Interchange"의 약자로, 주로 영어 알파벳, 숫자, 특수 문자 등을 7비트 이진수로 표현합니다.
ASCII 코드는 0부터 127까지의 숫자로 구성되어 있습니다. 이 범위에는 영어 대소문자, 숫자, 특수 문자 등이 포함되어 있습니다. 예를 들면, 대문자 'A'는 65, 소문자 'a'는 97에 대응되며, 숫자 '0'은 48에 대응됩니다.
8비트 ASCII 확장(Extended ASCII)도 있어서 전체 256개의 코드가 사용되기도 합니다. 이는 기존 ASCII 코드에 추가적인 문자 및 기호를 포함하고 있습니다.
예를 들어, 대문자 'A'는 여전히 65지만, 추가된 8비트 ASCII 코드에서는 다양한 기호와 문자들이 128부터 255까지 할당되어 있습니다.
아스키코드는 다양한 프로그래밍 언어 및 컴퓨터와의 상호 작용에서 사용되며, 문자를 컴퓨터에서 표현하고 처리하는 데에 중요한 역할을 합니다.