본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.16] 엘리베이터의 총 이동 거리 구하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 10.
반응형

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


문제 설명

 

하루 동안 엘리베이터가 멈춘 층이 순서대로 들어있는 배열이 있습니다.

이때 엘리베이터의 총 이동거리를 구하려 합니다.

 

하루동안 엘리베이터가 멈춰 선 층이 순서대로 들어있는 배열 fllors와 floors의 길이 floors_len이 매개변수로 주어질 때, 엘리베이터의 총 이동 거리를 return 하도록 solution 함수를 작성하세요. 


예시

 

fllors floors_len return 
[1, 2, 5, 4, 2] 5 7

 


코드 해석 및 전체 코드

 

dist) 총 이동 거리를 return 할 변수

 

for 문) 1 ~ floors_len만큼 반복 // floors[1] ~ floors[4]

이전 층에서 얼마큼 이동했는지 구해야 하므로 floors[1]부터 시작한다. // floors[0]은 이전 층이 없다.

 

if 문) floors[i]가 floors[i-1]보다 클 때 dist에 floors[i] - floors[i-1] 하기

else ) floors[i]가 floorspi-1]보다 작으면 dist에 floors[i-1] - floors[i]하기

 

i 비교 if / else dist
2 1 < 2 if문 수행
2 - 1 = 1
1
5 2 < 5 if문 수행
5 - 2 = 3
1 + 3
= 4
4 5 > 4 else문 수행
5 - 4 = 1
4 + 1
= 5
2 4 > 2 else문 수행
4 - 2 = 2
5 + 2
= 7
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

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

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어

[2차] 문제 6) 엘리베이터의 총 이동거리 구하기

반응형

댓글