[코테]/[GroomEdu]
[COS PRO 2급] 5차 1번_사다리 게임의 승자를 구해주세요! (C/C++)
Sky_
2021. 5. 23. 16:00
주어진 코드
#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 | 결과를 출력한 후 프로그램을 종료한다. |
goorm
구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.
www.goorm.io