わくワーク

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

Aランクレベルアップメニュー「へび」

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

 

プログラミングスキルアップのために、paizaラーニングの練習問題を解いています。

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

paiza.jp

 

57点でした・・・

テストケース1、2、6、7はパスしたのですが、3、4、5の出力結果が間違えているという結果でした。

 

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

 

#include <stdio.h>
int main(void){
    char str[1000];
    char map[51][52];
    char d;
    int h,w,y,x,n,i,sw,t,c,nc;
    fgets(str, sizeof(str), stdin);
    sscanf(str,"%d %d %d %d %d",&h,&w,&y,&x,&n);
    for(i=0;i<h;i++){
        fgets(str,sizeof(str),stdin);
        sscanf(str,"%s",map[i]);
    }
    sw=0;
    c=0;
    nc=0;
    map[y][x]='*';
    for(i=0;i<100;i++){
        if(nc>n&&i>t) break;
        if(sw==0){
            fgets(str,sizeof(str),stdin);
            sscanf(str,"%d %c",&t,&d);
            nc++;
            sw=1;
        }
        if(i==t){
            if(d=='R'){
                if(c==0){
                    x++;
                }
                else if(c==1){
                    y++;
                }
                else if(c==2){
                    x--;
                }
                else {
                    y--;
                }
                c++;
                if(c==4) c=0;
            }
            else if(d=='L'){
                if(c==0){
                    x--;
                }
                else if(c==1){
                    y--;
                }
                else if(c==2){
                    x++;
                }
                else {
                    y++;
                }
                c--;
                if(c<0) c=3;
            }
            sw=0;
        }
        else {
            if(c==0){
                y--;
            }
            else if(c==1){
                x++;
            }
            else if(c==2){
                y++;
            }
            else {
                x--;
            }
        }
        if(x<0||y<0||x==w||y==h||map[y][x]=='#'||map[y][x]=='*'){
            break;
        }
        else {
            map[y][x]='*';
        }
    }
    for(i=0;i<h;i++){
        printf("%s\n",map[i]);
    }
    return 0;
}

 

Aランクは、難しいです。

解決策が、わからないので次に進んでみます。

 

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

チャオチャオ!