Algorithm/📖Baekjoon

#5622 다이얼

yewoneeee 2022. 4. 24. 22:02

# 문제

# 입력 및 출력

# 풀이

그냥 반복문 쓰면 엄청 간단한 코드긴 한데 다른 사람 코드를 보다가 짧은 코드를 발견해서 작성해봤다

#include <iostream>
using namespace std;

int main() {
	string dial;
	cin >> dial;
	int result = 0;
	result += dial.size();
	for (int i = 0; i < dial.size(); i++) {
		char a = dial[i];
		if (a == 'A' || a == 'B' || a == 'C') result += 2;
		else if (a == 'D' || a == 'E' || a == 'F') result += 3;
		else if (a == 'G' || a == 'H' || a == 'I') result += 4;
		else if (a == 'J' || a == 'K' || a == 'L') result += 5;
		else if (a == 'M' || a == 'N' || a == 'O') result += 6;
		else if (a == 'P' || a == 'Q' || a == 'R' || a == 'S') result += 7;
		else if (a == 'T' || a == 'U' || a == 'V') result += 8;
		else result += 9;
	}
	cout << result;
}

이 코드가 그냥 하나하나 조건을 따지는 코드다

이 코드 돌리다가 비주얼스튜디오 2019버전이 맛탱이가 갔다

코드 실행하면 자꾸 바이러스 뭐시기 하면서 알약검사 돌리고 재부팅 하라고 뜬다,,ㅋㅋ

찾아보니까 한번 뜨면 계속 뜬다고 2017버전 쓰래서 2017버전으로 돌아왔더니

string 헤더를 안써주면 cin이 안되는 현상 발생ㅋㅋ 그래서 헤더도 써주고 다른 사람 코드 좀 분석해봤다

알파벳 3개씩 묶어서 생각하면 되니까 /3해주고 +3 해주면 각 알파벳에 맞는 시간이 나옴

근데 중간중간 4개씩 묶이는 번호가 있는데 이걸 생각을 못해서 한번 틀렸다ㅋㅋ

4개씩 묶이는 경우는 3개씩 묶였을때보다 시간이 1초 줄게 되는데 그 경우가 S, V, Y, Z 일때다

이것만 처리해주면 제대로 나옴

#include <iostream>
#include <string>
using namespace std;

int main() {
	string dial;
	cin >> dial;
	int result = 0;
	for (int i = 0; i < dial.size(); i++) {
		char a = dial[i];
		result += (a - 'A') / 3 + 3;
		if (a == 'S' || a == 'V' || a == 'Y' || a == 'Z') result--;
	}
	cout << result << endl;
	return 0;
}