8월 3주차 과제 : 문제 2_아이스 아메리카노

2023. 8. 16. 17:02Algorithm ( p & swlug )/Programmers

8월 3주차 문제는 다음과 같다.

1. 배열 원소의 길이
2. 아이스 아메리카노
3. 삼각형의 완성조건(1)

 

 

두번째 문제이다.

문제 설명

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

머쓱이는 얼죽아이다.

 

내가 짠 코드보다 간단한 방법도 있을 것 같긴하지만, 나는 일단 1학기때 배운걸 최대한 활용해서 스스로짜보고 싶었다. 많이 길어진 것 같기는 하지만, 우선 머쓱이가 가지고 있는 돈이 매개변수 money 로 주어질때 최대로 마실 수 있는 아메리카노의 잔수는 몫으로 구하면 되겠다라고 생각했고, 몫을 저장할 수 있는 변수를 선언했다. 그리고 남은 돈을 배열에서 보여줘야하기때문에 몫과 아메리카노 가격인 5500원을 곲한 값을 money에서 빼준 값을 남은 돈으로 저장할 수 있는 result2변수도 선언해주었다. 

동적 메모리 할당부분은 사실 아직도 어떻게 활용할지 애매하다. 공부를 조금더 해야할 것같다.

일단은 answer[0], answer[1]에 각각 아메리카노를 사먹을 수 있는 최대의 잔수와 남은 돈을 순서대로 담을 수 있도록 대입해주었다. 

그리고 answer를 return했는데 이부분은 더 학습이 필요하겠지만 동적 메모리를 할당해서 포인터? 를 활용해 배열을 저장한 것같다...아마도 

아래는 내가 작성한 코드이고 한번에 캡쳐가 되지않아서 코드블럭을 활용했다.

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(int money) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int result1=0;//몫 저장할 변수
    int result2=0; // 남은 돈 저장할 변수
    
    result1 = money / 5500; // 몫
    result2 = money - (result1 * 5500); // 남은 돈

    int* answer = (int*)malloc(2 * sizeof(int)); // 배열 크기 동적 할당
    answer[0] = result1;
    answer[1] = result2;
    
    return answer;
}

int main() {
    solution(15000);
}

정답입니다.!