[伯俊/C]5622番ダイヤル
白駿5622解題C言語
https://www.acmicpc.net/problem/5622
の2 D配列の各番号に対応するアルファベットを指定します. で入力された文字と2 D配列に一致する文字の行インデックス+3を返します. が返すローインデックス値を加算すると、答え になります.
data[0] : ABC
data[1] : DEF
data[2] : GHI
data[3] : JKL
data[4] : MNO
data[5] : PQRS
data[6] : TUV
data[7] : WXYZ
Wはdata[7]の{WXYZ}に含まれているため、7+3を返す
Aはdata[0]の{ABC}に含まれているので0+3を返します
以前は1次元配列のみを書き、すべての問題を処理する際に1次元配列のみを考慮していたが、Pythonのpandaは2次元で存在していた.
それだけに、各要素のアクセスは簡単だと思います.ちょうど、このような方法でこの問題にアクセスするのはどうなのかと思っていたので、2次元配列でアクセスすると、想像以上に問題を解決しやすいようです.😎
https://www.acmicpc.net/problem/5622
トラブルシューティングプロセス
#include <stdio.h>
#include <string.h>
char data[8][5] = {"ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
int calcSec(char *dial);
int searchNum(char dialAlpha);
int main(void)
{
char input[15];
scanf("%s", input);
printf("%d", calcSec(input));
return 0;
}
int searchNum(char dialAlpha)
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 4; j++)
{
if (dialAlpha == data[i][j])
return i + 3;
}
}
return 0;
}
int calcSec(char *dial)
{
int len = strlen(dial);
int count = 0;
for (int i = 0; i < len; i++)
{
count += searchNum(dial[i]);
}
return count;
}
グローバル変数としてアクセスできるように2 D配列を初期化
char data[8][5] = {"ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
2~9の数字は、行インデックス0~8です.data[0] : ABC
data[1] : DEF
data[2] : GHI
data[3] : JKL
data[4] : MNO
data[5] : PQRS
data[6] : TUV
data[7] : WXYZ
計算時間の関数calcSec()
int calcSec(char *dial)
{
int len = strlen(dial);
int count = 0;
for (int i = 0; i < len; i++)
{
count += searchNum(dial[i]);
}
return count;
}
文字列の長さを繰り返し入力し、searchNum()関数で返されるすべての値を正しい答えに戻します.関数searchNum()は、各入力文字列の文字を返すのに数秒かかります。
int searchNum(char dialAlpha)
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 4; j++)
{
if (dialAlpha == data[i][j])
return i + 3;
}
}
return 0;
}
入力例:WAの場合Wはdata[7]の{WXYZ}に含まれているため、7+3を返す
Aはdata[0]の{ABC}に含まれているので0+3を返します
問題を解くときの気持ち
以前は1次元配列のみを書き、すべての問題を処理する際に1次元配列のみを考慮していたが、Pythonのpandaは2次元で存在していた.
それだけに、各要素のアクセスは簡単だと思います.ちょうど、このような方法でこの問題にアクセスするのはどうなのかと思っていたので、2次元配列でアクセスすると、想像以上に問題を解決しやすいようです.😎
Reference
この問題について([伯俊/C]5622番ダイヤル), 我々は、より多くの情報をここで見つけました https://velog.io/@enkoding/백준C-5622번-다이얼テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol