티스토리 뷰
문제
하루 동안 엘리베이터가 멈춘 층이 순서대로 들어있는 배열이 있습니다. 이때, 엘리베이터의 총 이동거리를 구하려 합니다. 단, 층과 층 사이의 거리는 1입니다.
예를 들어 배열에 [1,2,5,4,2]가 들어있다면, 엘리베이터가 이동한 거리는 7입니다.
하루 동안 엘리베이터가 멈춰 선 층이 순서대로 들어있는 배열 floors와 floors의 길이 floors_len이 매개변수로 주어질 때, 엘리베이터의 총 이동 거리를 return하도록 solution함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int floors[], int floors_len) {
int dist = 0;
for(int i = ; ; ++i){ //빈칸
if( ) //빈칸
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);
}
예시
floors | floors_len | return |
[1,2,5,4,2] | 5 | 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);
}
코드분석
단계 | 과정 |
main | 각 이동한 층이 담겨있는 배열 floors와 그 길이를 정의한 후 solution함수를 호출한다. |
solution | 총 이동거리를 저장할 변수 dist를 선언한다. |
solution - for | 엘리베이터가 운행을 시작한 층은 이동거리를 구하지 않기 때문에, for문은 1부터 floors_len -1까지 반복한다. 출발한 층이 도착한 층보다 낮을때(올라갈때), 도착한 층에서 출발한 층을 빼 dist에 더한다. 반대로 출발한 층이 도착한 층보다 높을때(내려갈때), 출발한 층에서 도착한 층을 뺀 값을 dist에 더한다. |
solution | 총 이동거리인 dist를 return한다. |
main | 결과를 출력한 후 프로그램을 종료한다. |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 2차 8번_소수의 갯수 구하기 (C/C++) (0) | 2021.05.11 |
---|---|
[COS PRO 2급] 2차 5번_몬스터 공격하기 (C/C++) (0) | 2021.05.10 |
[COS PRO 2급] 2차 4번_5글자 이상인 단어 배열하기 (C/C++) (0) | 2021.05.09 |
[COS PRO 2급] 2차 3번_짝수들의 제곱의 합 구하기 (C/C++) (0) | 2021.05.09 |
[COS PRO 2급] 2차 2번_더 많은 배수 구하기 (C/C++) (0) | 2021.05.08 |
댓글
공지사항
최근에 올라온 글
TAG
- 프로그래머스
- 배열활용문제
- Cos Pro
- 코스프로
- 자바
- 구름에듀
- groom
- CosPro
- YBM기출
- lv1
- Java
- 구름 기출문제
- COSPRO 2급
- C++
- 기출문제
- groomedu
- 1급
- C
- 배열
- 구름에듀 기출문제
- cospro기출문제
- 알고리즘
- lv2
- c언어
- 연습문제
- cospro기출
- programmers
- c언어 기출문제
- 코딩테스트
- YBM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함