엘리베이터 이동 거리 구하기

Yun Young Choi·2022년 6월 22일

CodingTest-C

목록 보기
7/15
post-thumbnail

문이 열립니다. . . 몇 번 움직였게?


main 함수 / 설명

int main() {
    int floors[5] = {1, 2, 5, 4, 2};
    int floors_len = 5;
    int ret = solution(floors, floors_len);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
  1. floors 배열에 몇 층 갔는지 저장
  2. floos_len을 5로 넣는다. 엘리베이터가 움직이는 횟수
  3. floors, floors_len을 매개변수로 갖는 solution 함수를 정수형 ret에 할당

solution 함수 / 설명

int solution(int floors[], int floors_len) { //1,2,5,4,2
    int dist = 0;
    for(int i = ; ; ++i){
        if()
            dist += floors[i] - floors[i-1];
        else
            dist += floors[i-1] - floors[i];
    }
    return dist;
}
  1. floors와 floors_len을 매개 변수로 갖는 solution 함수
  2. dist는 엘리베이터의 총 이동 거리를 담는 변수, 0으로 초기화
  3. floors_len만큼 반복하기 / 이전 층에서 얼만큼 이동했는지 알아야 하므로 floors[1]부터 시작
  4. 만약 floors[i]가 floors[i-1] (맨 뒤)보다 클 때 dist에 floors[i] - floors[i - 1] 하기
  5. 아니라면 dist에 += floors[i - 1] - floors[i] 하기
  6. dist 리턴!

전체 코드

int solution(int floors[], int floors_len) {
    int dist = 0;
    for (int i = 1; i < floors_len; ++i) {
        if (floors[i] >= floors[i - 1])
            dist += floors[i] - floors[i - 1];
        else
            dist += floors[i - 1] - floors[i];
    }
    return dist;
}

int main() {
    int floors[5] = { 1, 2, 5, 4, 2 };
    int floors_len = 5;
    int ret = solution(floors, floors_len);

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

실행 결과

profile
안냥하세요

0개의 댓글