반응형
엘리베이터의 총 이동 거리 구하기
문제 설명
하루 동안 엘리베이터가 멈춘 층이 순서대로 들어있는 배열이 있습니다.
이때 엘리베이터의 총 이동거리를 구하려 합니다.
하루동안 엘리베이터가 멈춰 선 층이 순서대로 들어있는 배열 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);
}
구름 goormedu COS PRO 2급 기출문제 - C언어
[2차] 문제 6) 엘리베이터의 총 이동거리 구하기
반응형
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.18] 소수의 개수 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.11 |
---|---|
[No.17] 섭씨, 화씨 온도 바꾸기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.11 |
[No.15] 몬스터 공격하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.10 |
[No.14] 5글자 이상인 단어 배열하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.09 |
[No.13] 짝수들의 제곱의 합 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.09 |
댓글