반응형
0) 제목
Hackerrank 의 C++>Classes 부분의 Box it! 문제입니다.
C++ 이용하여 풀었습니다.
1) 문제설명
박스의 크기를 구하는 간단한 문제입니다.
주어진 문제에 맞게 클래스를 만들고
문제에서 요구하는데로 연산자 오버로딩(operator overloading)을 만들면 됩니다.
헤더파일과, 이름공간 및 main 함수는 hackerrank 에서 제공이 됩니다
2) 풀이과정
문제의 설명을 따라가면서 클래스를 만들고 그 안에 멤버 변수와 멤버 함수를 만듭니다.
또한, 문제에서 요구하는 연산자 오버로딩을 만듭니다.
하나의 Test case에서 오류의 원인은 long long CalculateVolume() 함수 였습니다.
이 함수는 int 값 l, b, h를 곱해서 long long 타입으로 반환하는 함수입니다.
이때, return l*b*h 로 간단하게 생각하고 넘어가서, 오류가 발생했었습니다.
int를 세번 곱한 것이 int의 값의 범위를 넘을 수 있다는 생각을 하지 못했었습니다.
그렇기 때문에 아래의 코드 처럼 long long의 변수를 초기화 하고 int 값을 각각 곱해주는 방식을 취했습니다.
3) 함수설명
간단한 코드 이므로 생략하겠습니다.
4) 코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | class Box{ private: int l; int b; int h; public: //생성자 Box(){ l=0; b=0; h=0; } //생성자2 Box(int l,int b,int h):l(l), b(b), h(h) { } //복사 생성자 (동적할당할 것이 없으므로, 얕은 복사생성자) Box(Box &box): l(box.l), b(box.b), h(box.h){ } int getLength() const{ return l; } int getBreadth () const{ return b; } int getHeight () const{ return h; } long long CalculateVolume(){ long long vol = 1; vol *= l; vol *= b; vol *= h; return vol; } bool operator<(Box& b){ if(this->getLength() < b.getLength()){ return true; }else if(this->getBreadth() < b.getBreadth() && this->getLength() == b.getLength()){ return true; }else if(this->getHeight() < b.getHeight() && this->getBreadth() == b.getBreadth() && this->getLength() == b.getLength()){ return true; } return false; } }; ostream& operator<<(ostream& out, Box& B){ out << B.getLength() << " " << B.getBreadth() << " " << B.getHeight(); return out; } | cs |
5) 인증
경로 : Dashboard>C++>Classes>Box it!
출처 : [HackerRank] https://www.hackerrank.com/challenges/box-it/
더 나은 코드로 보완 할 곳이 있으면 말씀해주세요.
부족한 코드 많은 지적 부탁드립니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[LeetCode] 1018. Binary Prefix Divisible By 5 Solution in C++ (0) | 2019.04.12 |
---|---|
[프로그래머스] LEVEL 1 : 핸드폰 번호 가리기 (C++) (1) | 2018.09.18 |
[프로그래머스] LEVEL 1 : 자릿수 더하기 (C++) (0) | 2018.09.17 |
[프로그래머스] LEVEL 1 : 자연수 뒤집어 배열로 만들기 (C++) (0) | 2018.08.17 |
[프로그래머스] LEVEL 1 : 문자열 다루기 기본(C++) (0) | 2018.08.15 |
[프로그래머스] LEVEL 1 : 나누어 떨어지는 숫자 배열(C++) (4) | 2018.08.05 |
[프로그래머스] LEVEL 1 : 가운데 글자 가져오기(C++) (0) | 2018.08.04 |
[Level 2] 콜라즈 추측 (0) | 2017.12.26 |