(백준BAEKJOOB )- 5622번 -다이얼 "c++"
2023. 3. 6. 15:49ㆍ언어/c, c++
728x90
문제 해석 부터하면 2에는 a b c
3에는 d e f. . . 이런식으로 이어진다.
다이얼 숫자에 1씩 추가하여 조건문으로 풀수있다.
코드 1번
#include<iostream>
using namespace std;
int main() {
string a; // 문자열 입력 변수
cin >> a;
int time = 0; // 총 시간 합계 변수
for (int i = 0; a[i] != NULL; i++) {
if (a[i] == 'A' || a[i] == 'B' || a[i] == 'C')
{
time += 3;
}
else if (a[i] == 'D' || a[i] == 'E' || a[i] == 'F')
{
time += 4;
}
else if (a[i] == 'G' || a[i] == 'H' || a[i] == 'I')
{
time += 5;
}
else if (a[i] == 'J' || a[i] == 'K' || a[i] == 'L')
{
time += 6;
}
else if (a[i] == 'M' || a[i] == 'N' || a[i] == 'O')
{
time += 7;
}
else if (a[i] == 'P' || a[i] == 'Q' || a[i] == 'R' || a[i] == 'S')
{
time += 8;
}
else if (a[i] == 'T' || a[i] == 'U' || a[i] == 'V')
{
time += 9;
}
else if (a[i] == 'W' || a[i] == 'X' || a[i] == 'Y' || a[i] == 'Z')
{
time += 10;
}
}
cout << time << endl;
}
하지만 노가다의 방법이고 메모리도 그닥 좋은편은 아닌거같다.
그래도 가독성은 매우 좋은거같다.
코드 2번
#include <iostream>
using namespace std;
int main()
{
int times[] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 };
char phone[16]; //최대 16글자
int result = 0; //계산 떄문에 초기화 필수
cin >> phone;
for (int i = 0; phone[i] != '\0'; i++)
result += times[phone[i] - 'A'];
cout << result;
}
배열로 푸는 방법도 존재한다. 나는 메모리 절약이 많이 될줄 알았는데 반복문때문에 그런지
메모리 가 거시거 기기였다..
그냥 이 문제는 가독성 좋은 위에 코드를 써야곘다 ㅋㅋ
728x90
'언어 > c, c++' 카테고리의 다른 글
(백준BAEKJOOB )- 문자열 문제 4개 "c++" (0) | 2023.03.11 |
---|---|
(백준BAEKJOOB )- 9012번 -괄호 "c++" (0) | 2023.03.07 |
(백준BAEKJOOB )- 9093번 -단어 뒤집기 "c++" (0) | 2023.03.05 |
(백준BAEKJOOB )- 2292번 -벌집 "c++" (1) | 2023.03.03 |
(백준BAEKJOOB )- 1463번 -1로 만들기 "c++" (0) | 2023.03.01 |