※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 20493번 문제인 세상은 하나의 손수건이다.
문제는 아래 링크를 확인하자.

www.acmicpc.net/problem/20493

 

20493번: 세상은 하나의 손수건

오래된 운동화를 신고, 시원한 공기와 투명한 하늘 아래 따뜻한 햇빛을 받으며 새로 마주하는 이 거리와 손잡고 걷는다. 복잡한 생각 없이 설레는 마음으로 걷다 보면 뛰고 싶고, 같이 달리다 보

www.acmicpc.net

이 문제는 주어진 입력을 받아 순서대로 이어서 처리하는 문제이다.

문제에서 시키는 대로 하면 금방 풀 수 있다.

 

함수를 정의하면 더 간단히 풀 수 있었을 것 같은 아쉬움이 남는다.

#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;

int main()
{
    std::ios::sync_with_stdio(0);
    cin.tie(0);

    int x = 0, y = 0, timebefore = 0;
    int N, T;
    cin >> N >> T;
    int temp_T;
    int dir=0; // 0: x방향 , 1: y방향, 2: -x방향, 3: -y방향
    string temp_dir;
    for (int i = 0;i < N;i++) {
        cin >> temp_T >> temp_dir;
        if (dir == 0) {
            x += (temp_T - timebefore);
        }
        else if (dir == 1) {
            y += (temp_T - timebefore);
        }
        else if (dir == 2) {
            x -= (temp_T - timebefore);
        }
        else y -= (temp_T - timebefore);

        timebefore = temp_T;

        if (temp_dir == "right") {
            dir = (dir - 1) % 4;
            if (dir < 0) dir += 4;
        }
        else dir = (dir + 1) % 4;
    }
    // 마지막 움직임
    if (dir == 0) {
        x += (T - timebefore);
    }
    else if (dir == 1) {
        y += (T - timebefore);
    }
    else if (dir == 2) {
        x -= (T - timebefore);
    }
    else y -= (T - timebefore);

    cout << x <<' '<< y;

    return 0;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 20495 // C++] 수열과 헌팅  (0) 2021.01.26
[BOJ 20494 // C++] 스시  (0) 2021.01.25
[BOJ 6603 // C++] 로또  (0) 2021.01.23
[BOJ 15610 // C++] Abbey Courtyard  (0) 2021.01.22
[BOJ 1533 // C++] 길의 개수  (0) 2021.01.21

+ Recent posts