1) 문제: 120819. 아이스 아메리카노
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
• 0 < money ≤ 1,000,000
입출력 예 설명
money | result |
5,500 | [1, 0] |
15,000 | [2, 4000] |
2) 나의 첫 풀이
제한사항을 먼저 적용하고 money 나누기 5500원을 했을 때,
나머지가 없는 경우 배열의 0번 인덱스에 몫을, 1번 인덱스에 0을 출력할 것이다.
반면! 나머지가 있는 경우 배열의 0번 인덱스에 몫을, 배열의 1번 인덱스에 money - money*몫 을 출력할 것이다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int money) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(1);
if(0<money && money<-1000000){
if(money%5500 == 0){
answer = [money/5500, 0];
}
else(money%5500 != 0){
answer = [money/5500, money-(money*money/5500)];
}
}
return answer;
}
3) 수정한 풀이
C 언어에서는 배열을 할당할 때 대괄호를 사용하지 않는다고 한다.
또한, 조건문에서 else 뒤에 새로운 조건을 달았는데, 이 부분이 잘못된 것이다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int money) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(2*sizeof(int));
if(0<money && money<=1000000){
if(money%5500 == 0){
answer[0] = money/5500;
answer[1] = 0;
}
else{
answer[0] = money/5500;
answer[1] = money- (money/5500)*5500;
}
}else{
answer[0] = 0;
answer[1] = 0;
}
return answer;
}
4) 배운 점
- int* answer = (int*)malloc(2*sizeof(int));
→ 해당 코드에서 크기가 2인 배열을 만들어야 하므로 2개 * sizeof(int)를 작성해야 한다.
- C언어에서 배열은 대괄호를 사용하지 않는다.
- else 조건문 뒤에는 새로운 조건을 추가할 필요가 없다.
'Computer Science > PS' 카테고리의 다른 글
[PS] 120841. 점의 위치 구하기 (1) | 2023.11.11 |
---|---|
[PS] 120889. 삼각형의 완성조건(1) (0) | 2023.11.11 |
[PS] 120816. 피자 나눠 먹기(3) (1) | 2023.11.09 |
[PS] 120585. 머쓱이보다 키 큰 사람 (0) | 2023.11.08 |
[PS] 120821. 배열 뒤집기 (1) | 2023.11.06 |