본문 바로가기

cospro2급/cospro_5차

2021-05-23 / 1번 문제

cospro 1번 문제

 

사다리 게임의 승자를 구해주세요!

 

문제설명

6명이 사다리 게임을 할 때, 몇 번째 위치에서 시작하는 사람이 상품을 타는지 알고 싶다. 가로줄은 항상 인접한 세로줄만 연결할 수 있으며 주어진 순서대로 위에서부터 연결한다.

가로줄의 위치가 담긴 2차원 배열 ladders, 배열 ladders의 길이 ladders_len, 상품의 위치 win이 매개변수로 주어질 때, 당첨자의 시작 위치를 return 하는 solution 함수를 완성한다.

 

매개변수 설명

가로줄의 위치가 담긴 2차원 배열 ladders와 상품이 있는 위치 win이 solution 함수의 매개변수로 주어진다.

  ladders_len은 1 이상 20 이하인 자연수이다.

  win은 1 이상 6 이하인 자연수이다.

  가로줄은 항상 연결할 수 있는 형태만 주어진다.

 

return 값 설명

승리하는 사람의 시작 위치를 return 한다.

 

예시

 

예시 설명

 

참고 사항

사다리 게임은 먼저 사람 수 만큼 세로줄을 긋고 한쪽 편에는 이름을 쓰고 반대쪽에는 상품 위치를 쓴다. 서로 인접한 세로줄 사이에 가로줄을 무작위로 그은 다음 세로줄을 타고 내려가면서 가로줄을 만날 때마다 가로줄로 연결된 다른 세로줄로 가는 게임이다.

 

코드 설명

#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);
}

 

    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];

 

핵심은 가로줄이 나올 때마다 플레이어들의 위치가 교환된다는 것이다. 첫번째 사람의 위치에 +1을 해주어 가로줄을 바꿔준다. 

승리자의 위치에서 -1을 해주는 이유는 배열은 0부터 시작하기 때문이다.

 

 

 

goorm

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

www.goorm.io

 

'cospro2급 > cospro_5차' 카테고리의 다른 글

2021-05-25 / 5번 문제  (0) 2021.05.25
2021-05-25 / 6번 문제  (0) 2021.05.25
2021-05-24 3번 문제  (0) 2021.05.24
2021-05-24 / 4번 문제  (0) 2021.05.24
2021-05-23 / 2번 문제  (0) 2021.05.23