https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
생각
abc는 3초 / def는 4초 / ghi는 5초…
알파벳을 입력 받고 해당하는 초 누적으로 더해서 출력해주기
알파벳 인식을 어떤 식으로 해야되나 고민!
1. if문이나 switch문으로 돌린다
2. 아스키코드를 사용한다 ( 형변환 사용!)
나는 2번으로 풀었다!
1. 입력 받은 문자열의 인덱스 하나하나를 검사한다!
2. 여기서 (int)형변환을 사용해서 숫자로 변경한다
3. -65(대문자 A의 아스키코드 값)를 해주고 3으로 나누어준다
ex) A : (65-65)/3 = 0
B : (66-65)/3 = 0
C : (67-65)/3 = 0
… 이런식으로!
4. +3초를 해준다
5. 7과 9는 알파벳이 4개씩 있으니까 예외처리를 해준다
6. S, V, Y, Z일 때 누적 값에서 하나씩 빼준다! 왜냐면 하나 더 더해진 걸로 계산됐을거니까!
정답 코드
#include <iostream>
using namespace std;
int main(){
int sum = 0;
string s;
cin >> s;
for(int i=0 ; i<s.length() ; i++){
sum += (((int)s[i]-65)/3)+3;
if(s[i] == 'S' || s[i] == 'V' || s[i] == 'Y' || s[i] == 'Z'){
sum--;
}
}
cout << sum;
}
728x90
'백준' 카테고리의 다른 글
백준 1789 C++ 시간초과 (2) | 2024.01.31 |
---|---|
백준 10816 C++ (0) | 2023.12.27 |
백준 2903번 C++ (0) | 2023.12.26 |
백준 11047 C++ (2) | 2023.12.24 |
백준 1342번 C++ (1) | 2023.12.23 |