わくワーク

2022年3月に早期退職し起業しました。仕事、趣味について発信する雑記ブログです。当ブログはGoogleアドセンス及びアフィリエイト広告を利用しています。

Aランクレベルアップメニュー「移動が可能かの判定・複数回の移動」

お元気さまです。わくワークの義(ヨシ)です。

 

プログラミングスキルのレベルアップを目指して、paizaラーニングで練習問題を解いています。

練習問題は、次のリンクで確認できます。

paiza.jp

 

そんなに難しくないという感触で、提出しましたが・・・

50点でした・・・

何度か見直したのですが、何が悪いのかわかりませんでした。

 

提出したコードは、次のとおりです。

 

#include <stdio.h>
int main(void){
    char str[1000];
    char buf[21][22];
    char lr;
    int h,w,sy,sx,n,i,dr;
    fgets(str, sizeof(str), stdin);
    sscanf(str,"%d %d %d %d %d",&h,&w,&sy,&sx,&n);
    for(i=0;i<h;i++){
        fgets(str,sizeof(str),stdin);
        sscanf(str,"%s",buf[i]);
    }
    dr = 0;
    for(i=0;i<n;i++){
        fgets(str,sizeof(str),stdin);
        sscanf(str,"%c",&lr);
        if( lr=='R'){
            switch(dr){
                case 0:
                    sx++;
                    dr++;
                    break;
                case 1:
                    sy++;
                    dr++;
                    break;
                case 2:
                    sx--;
                    dr++;
                    break;
                case 3:
                    sy--;
                    dr=0;
                    break;
            }
        }
        else{
            switch(dr){
                case 0:
                    sx--;
                    dr=3;
                    break;
                case 1:
                    sy--;
                    dr--;
                    break;
                case 2:
                    sx++;
                    dr--;
                    break;
                case 3:
                    sy++;
                    dr--;
                    break;
            }
        }
        if( sx<0 || sy<0 || sx==w || sy==h ){
            printf("%s\n", "Stop");
            return -1;
        }
        else if( buf[sy][sx]=='#'){
            printf("%s\n", "Stop");
            return -1;
        }
        else{
            printf("%d %d\n",sy,sx);
        }
    }
    return 0;
}

 

そのうち理由がわかるだろうということで、スキップして次の問題をやってみます。

 

それでは、今日もワクワクな一日を!

チャオチャオ!