[코테]/[GroomEdu]

[COS PRO 2급] 5차 1번_사다리 게임의 승자를 구해주세요! (C/C++)

Sky_ 2021. 5. 23. 16:00

구름에듀 5차 1번 문제

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

주어진 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int ladders[][2], int ladders_len, int win) {
    int answer = 0;

    int player[6] = { 1, 2, 3, 4, 5, 6 };

    for (int i = 0; i < ladders_len; i++) {
        int temp = player[ladders[i][0] - 1];
       										//빈칸
        		 = temp;						//빈칸
    }

    answer = player[win - 1];

    return answer;
}
int main() {
    int ladders[5][2] = { {1, 2}, {3, 4}, {2, 3}, {4, 5}, {5, 6} };
    int ladders_len = 5;
    int win = 3;
    int ret = solution(ladders, ladders_len, win);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

완성 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int ladders[][2], int ladders_len, int win) {
    int answer = 0;

    int player[6] = { 1, 2, 3, 4, 5, 6 };

    for (int i = 0; i < ladders_len; i++) {
        int temp = player[ladders[i][0] - 1];
        player[ladders[i][0] - 1] = player[ladders[i][0]];
        player[ladders[i][0]] = temp;
    }

    answer = player[win - 1];

    return answer;
}
int main() {
    int ladders[5][2] = { {1, 2}, {3, 4}, {2, 3}, {4, 5}, {5, 6} };
    int ladders_len = 5;
    int win = 3;
    int ret = solution(ladders, ladders_len, win);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

예시

ladders ladders_len win return
[[1, 2], [3, 4], [2, 3], [4, 5], [5, 6]] 5 3 1

 

 

 

 

 

 

 

 

 

 

코드 분석

단계 과정
main 각각의 연결된 사다리의 위치가 저장된 배열 ladders와 연결된 횟수 ladders_len를 선언한다.
이긴 사람의 위치가 저장된 변수 win을 선언한 후 solution함수를 호출한다.
solution 사다리의 각 번호가 담긴 배열 players를 선언한다.
solution - for i=0 부터 i=사다리의 길이 만큼 반복한다.
임시변수 temp를 사용하여 player[ladders[i][0]-1]과 player[ladders[i][0]의 값을 교환한다.
문제분석 주어진 문제를 살펴보면, 각 사다리가 연결되는 조건은 서로 인접해있는 사다리 끼리만 연결할 수 있다는 것이다.
따라서 단순하게 연결된 사다리끼리 각 players의 번호를 교환해주면 코드는 해결된다.
solution 최종적으로 win의 위치에 있는 player가 승자이므로, player의 win번방-1(배열의 특성)에 있는 번호가 승자가 된다. (위의 예시에서는 1번 player가 win 위치인 3(2번방)에 위치함)
main 결과를 출력한 후 프로그램을 종료한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

GroomEdu

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io