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

Yun Young Choi·2022년 10월 19일

CodingTest-C

목록 보기
13/15
post-thumbnail

여태 풀었던 것 중 가장 시간이 오래 걸렸던 것이다...~
이맛에 코테한다는 말을 여기에 쓰는 것 같다.


main 설명

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);
}
  1. ladders 사다리 배열 선언
  2. ladders 배열의 길이 5가 담긴 변수 선언
  3. 3번 줄에 가는 사람이 이기는 win 변수 선언
  4. ret 변수에 solution 함수의 반환값을 저장

solution 설명

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

추측할 수 있는 점
1. temp라는 단어 == 무언가와 바꾼다. temp는 임시 저장소로 자주 쓰인다는 것
2. 세 줄이라는 점 == 읍읍 정렬이 대부분 세 줄로 이뤄진다는 것~
3. temp와 n - 1 이라는 게 나온 점 == 읍읍 정렬이 temp와 n - 1로 이뤄져있다는 것.


  1. 승리한 player의 번호를 담을 변수 answer 선언
  2. player 번호가 담긴 담긴 player 배열 선언
  3. ladders 배열의 길이만큼 for문 실행
  4. 임시 저장 변수인 temp를 선언
  5. 연결된 사다리끼리 각 players의 번호를 교환한다.
  6. for문 과정

빈칸 채우기

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

실행 결과


profile
안냥하세요

0개의 댓글