わくワーク

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

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

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

 

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

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

paiza.jp

 

前にやった問題に似ており、今回は簡単に感じました。

 

 

 

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


#include <stdio.h>
#include <string.h>
int main(void){
    char str[1000];
    char buf[21][22];
    int h,w,sy,sx,i;
    char d,m;
    fgets(str, sizeof(str), stdin);
    sscanf(str,"%d %d %d %d %c %c",&h,&w,&sy,&sx,&d,&m);
    for(i=0;i<h;i++){
        fgets(str, sizeof(str), stdin);
        sscanf(str,"%s",buf[i]);        
    }
    if( m=='R'){
        switch(d){
            case 'N':
                sx++;
                break;
            case 'E':
                sy++;
                break;
            case 'S':
                sx--;
                break;
            case 'W':
                sy--;
                break;
        }
    }
    else {
        switch(d){
            case 'N':
                sx--;
                break;
            case 'E':
                sy--;
                break;
            case 'S':
                sx++;
                break;
            case 'W':
                sy++;
                break;   
        }
    }
    if( sx<0 || sx==w || sy<0 || sy==h || buf[sy][sx]=='#')
        printf("%s", "No");
    else    printf("%s", "Yes");

    return 0;
}

 

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

チャオチャオ!