티스토리 뷰

http://icpc.me/10545


문제

일반적인 2G 휴대폰의 키패드에서, 각각의 키패드가 다르게 작동한다.
a를 누르면 b가, b를 누르면 c가... 이렇게 진행 될떄
주어진 문자열을 만들기 위해선 어떤 키패드를 몇번 눌러야하는지 출력하라.

풀이

단순 구현
노가다
이하 생략

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <bits/stdc++.h>
using namespace std;
int cnt[27],press[27];
int key[10];
int main()
{
    cnt[0]=cnt[3]=cnt[6]=cnt[9]=cnt[12]=cnt[15]=cnt[19]=cnt[22]=1;
    cnt[1]=cnt[4]=cnt[7]=cnt[10]=cnt[13]=cnt[16]=cnt[20]=cnt[23]=2;
    cnt[2]=cnt[5]=cnt[8]=cnt[11]=cnt[14]=cnt[17]=cnt[21]=cnt[24]=3;
    cnt[18]=cnt[25]=4;
    press[0]=press[1]=press[2]=2;
    press[3]=press[4]=press[5]=3;
    press[6]=press[7]=press[8]=4;
    press[9]=press[10]=press[11]=5;
    press[12]=press[13]=press[14]=6;
    press[15]=press[16]=press[17]=press[18]=7;
    press[19]=press[20]=press[21]=8;
    press[22]=press[23]=press[24]=press[25]=9;
    for(int i=1,x;i<=9;i++scanf("%d",&x),key[x]=i;
    int before=-1;
    string s; cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int ch=s[i]-'a';
        if(key[press[ch]]==before) printf("#");
        for(int i=0;i<cnt[ch];i++printf("%d",key[press[ch]]);
        before=key[press[ch]];
    }
    return 0;
}
cs


'백준' 카테고리의 다른 글

[ BOJ 10818 ] 최대,최소  (0) 2018.07.23
[ BOJ 2143 ] 두배열의 합  (0) 2018.07.23
[ BOJ 10571 ] 다이아몬드  (0) 2018.07.23
[ BOJ 1280 ] 나무 심기  (0) 2018.07.23
[ BOJ 2508 ] 사탕 박사 고창영  (0) 2018.07.23
댓글
최근에 올라온 글
공지사항
Total
Today
Yesterday
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함