www.acmicpc.net/problem/5622

 

5622번: 다이얼

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. �

www.acmicpc.net

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

int main(void)
{
  string a;
  int sum = 0;
  cin >> a;
  for(int i = 0 ; i < a.length() ; i++)
  {
    // 일단 3으로 나눈 값을 기준으로 다 구하고
    sum += 3 + (int(a[i]) - 65) / 3;

    // 중간에 4개가 껴있는 경우가 있기 때문에 넘어가는 부분들에 대해서 처리
    switch(a[i])
    {
      case 'S' :
      case 'V' :
      case 'Y' :
      case 'Z' :
        sum--;
        break;
    }
  }
  cout << sum << endl;
}

 

[Try]

1. 단순히 3개씩 묶어서 처리해준다

 

[Point]

1. 해당 문자에 대한 값을 26개 배열로 쭉 만들어놓고 문자를 인덱스로 사용해서 값을 구한다

2. 4개 짜리 나오기 전까지와 마지막 4개짜리 전까지 3개로 구간 나눠서 값을 구해준다

'PS > BOJ' 카테고리의 다른 글

[백준] 5086.cpp : 배수와 약수  (0) 2020.06.10
[백준] 1427.cpp : 소트인사이드  (0) 2020.06.09
[백준] 2630.cpp : 색종이 만들기  (0) 2020.06.01
[백준] 13460.cpp : 구슬 탈출 2  (0) 2020.05.31
[백준] 1463.cpp : 1로 만들기  (0) 2020.05.30

+ Recent posts