반갑습니다!

[SWEA] Ladder1 본문

알고리즘 문제 풀이

[SWEA] Ladder1

김덜덜이 2020. 4. 26. 00:24
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com

풀이

사다리 구현만 잘 하면 쉽게 해결할 수 있다.

코드

#include <iostream>
#include <vector>
using namespace std;

int radder[100][100];
vector<int> start;

bool can_finish(int pos) {
    int y = 0;
    int x = pos;

    // 맨 사다리 맨 아래까지 이동
    while (y < 99) {
        // 오른쪽으로 이동이 불가능할 때까지 이동
        if (x < 99 && radder[y][x + 1] == 1) while (x < 99 && radder[y][x + 1] == 1) x++;
        // 왼쪽으로 이동이 불가능할 때까지 이동
        else if (x > 0 && radder[y][x - 1] == 1) while (x > 0 && radder[y][x - 1] == 1) x--;
        y++;
    }
    // X표시에 도착했는지 확인
    if (radder[y][x] == 2) return true;
    return false;
}

int main() {
    int idx = 1;
    for (int c = 1; c <= 10; c++) {
        int tmp;
        cin >> tmp;
        start.clear();
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                cin >> radder[i][j];
                // 시작점을 벡터에 저장
                if (i == 0 && radder[i][j] == 1) start.push_back(j);
            }
        }

        for (int s : start) {
            if (can_finish(s)) {
                cout << "#" << c << ' ' << s << '\n';
            }
        }
    }
    return 0;
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준] 13265 색칠하기  (0) 2020.04.26
[백준] 13460 구슬 탈출 2  (0) 2020.04.26
[SWEA] 자기 방으로 돌아가기  (0) 2020.04.25
[백준] 15971 두 로봇  (0) 2020.04.24
[프로그래머스] 구명보트  (0) 2020.04.24