본문 바로가기

<알고리즘 문제풀이&연습>/[C,C++] Hackerrank19

[C++ operator overloading] Box it! (클래스, 연산자 오버로딩) 0) 제목Hackerrank 의 C++>Classes 부분의 Box it! 문제입니다.C++ 이용하여 풀었습니다.1) 문제설명박스의 크기를 구하는 간단한 문제입니다.주어진 문제에 맞게 클래스를 만들고문제에서 요구하는데로 연산자 오버로딩(operator overloading)을 만들면 됩니다.헤더파일과, 이름공간 및 main 함수는 hackerrank 에서 제공이 됩니다2) 풀이과정문제의 설명을 따라가면서 클래스를 만들고 그 안에 멤버 변수와 멤버 함수를 만듭니다.또한, 문제에서 요구하는 연산자 오버로딩을 만듭니다.하나의 Test case에서 오류의 원인은 long long CalculateVolume() 함수 였습니다. 이 함수는 int 값 l, b, h를 곱해서 long long 타입으로 반환하는 함수.. 2018. 12. 1.
[CodeGround] 하노이 타워(Hanoi Tower) 안녕하세요. BlockDMask 입니다.오늘은 codeground 두번째 문제 '하노이 타워'를 풀어보았습니다.0. 제목코드그라운드 하노이 타워CodeGround Hanoi tower1. 문제설명세개의 타워가 있고첫번째 타워에 서로 다른 접시 N개가 쌓여있습니다. 첫번째 타워에 놓여있는 모든 접시를 세번째 타워로 옮기고자 할때, 접시를 옮기는 순서를 출력하라.접시는 한 번에 하나만 옮길 수 있고, 한 타워의 맨 위 접시를 다른 타워의 맨 꼭대기에 올릴 수 있다.큰접시 위에 작은접시가 올라가야만 한다. (작은 접시위에 큰접시 올라오는것 불가능)2. 풀이과정알고리즘 수업을 들었던 사람은 재귀 함수 파트에서 꼭 한번은 배웠던 하노이 타워(Hanoi Tower) 문제입니다.유명한 만큼 설명은 생략하겠습니다. 3.. 2017. 8. 7.
[CodeGround] 극단적인 수 안녕하세요. BlockDMask 입니다.오늘은 새로운 알고리즘 문제 사이트 코드 그라운드(codeground)를 발견하여서 여기 문제를 풀어 보았습니다. 0. 제목코드그라운드 극단적인 수.codeground 극단적인 수.1. 문제설명4와 7로만 이루어진 숫자셋이 있다고 생각.K가 들어오면 K 번째 숫자를 출력.첫쨰줄에 1 4,7 법칙으로 바꾸어 주는 겁니다.2의 배수이면 7이 되고, 그렇지 않으면 4가 됩니다.여기서 중요한게 있습니다.표를 보게되면2번째 표를 보면1, 3, 7 일때 4, 44, 444 가 됩니다. (7 - 1 ) /2 = 3 (3 - 1) /2 = 1 이런식으로 단위가 증가하는 것을 볼수 있으며10진수에서 2진수로 변환하는 것 처럼 나머지를 이용하여 각 자리의 숫자를 구하고 역순으로 출력.. 2017. 8. 4.
[C++ vector] Vector-Erase 0) 제목Hackerrank의 C++ STL 카테고리의 Vector-Erase 문제입니다.C++ 사용했습니다.1) 문제설명n을 입력 받고 n개의 개수 만큼 vector의 인자를 받습니다.a를 입력받고 a번째 인자를 erase합니다.a, b를 입력받고 범위 a~b 인자를 erase 합니다.vector의 size와, 인자들을 차례로 출력합니다.2) 풀이과정erase의 두가지 쓰임새를 위한 간단한 문제입니다.v.erase(iter) 처럼 파라미터를 하나 받는 경우에는 벡터의 iter 위치의 인자를 삭제 합니다.v.erase(start, end) 처럼 파라미터를 두개 받는 경우에는 [start, end) 의 범위의 인자를 삭제 합니다.start 이상, end 미만의 범위의 인자를 삭제 한다는 뜻입니다.그림으로 .. 2017. 7. 24.
[C++ protected] Rectangle Area (Inheritance) 0) 제목Hackerrank 의 C++>Inheritance 부분의 Rectangle Area 입니다.C++ 이용하여 풀었습니다.1) 문제설명간단한 문제입니다.Rectangle 클래스를 만들고 그것을 상속 받는 Rectangle Area 클래스에서 Rectangle 클래스의 멤버 변수에 접근 해라.2) 풀이과정문제에서 시키는대로만 만들면 됩니다.유도 클래스에서 기초 클래스의 멤버 변수를 직접 접근 하기 때문에, 기초 클래스의 멤버 변수를 protected로 선언해서 문제를 풀었습니다.3) 함수설명간단하게 접근 지정자에 대해 말하고 가겠습니다. C++ 에서는 3가지의 접근 지정자가 존재합니다.접근지정자(access specifier) 는 클래스 외부에서그 멤버를 접근할수 있는 허가? 범위? 를 지정하는 것.. 2017. 7. 19.
[C++ 예외처리] Exceptional Server (bad_alloc, exception) 0) 제목 Hackerrank 의 C++>Classes부분의 Exceptional Server 문제입니다.C++ 이용하여 풀었습니다. 1) 문제설명 함수가 제대로 작동하는지 관련해서 예외처리 하는 문제입니다.함수가 제대로 작동하는 경우 -> 함수결과 값 출력.함수에서 메모리 할당관련 오류가 난경우 -> "Not enough memory" 출력.C++ standard 오류가 발생했을 경우 -> "Exception : S" 출력 S는 에러 메시지.C++ standard가 아닌 다른 오류가 발생했을 경우 -> "Other Exception" 출력. 2) 풀이과정 예외처리라고 하자마자 try, throw, catch가 생각났습니다.예외가 발생했을때 throw를 통해서 보내는데이때 catch에서 인자로 받을 오류.. 2017. 7. 17.
[C 자료구조] Stack - Simple Text Editor 0) 제목Hackerrank 의 Stacks 부분의 Simple Test Editor 문제입니다. (simple하지 않았습니다. 생각을 많이했어야 하는 문제였습니다 저한테는..)C언어를 이용하여 풀었습니다.1) 문제설명Quary의 갯수 q를 받고, q만큼의 쿼리(line)을 받습니다.1입력시 append.2입력시 delete.3입력시 print4입력시 undo입니다.append는 문자열 str 을 받고, 기존에 문자열에 새 문자열을 붙입니다.delete는 int 타입의 변수 k를 받는데, 문자열의 맨 끝에서부터 k 만큼 문자를 삭제합니다.print는 int 타입의 변수 k를 받는데, 현재 문자열에서 k번째 인자를 출력합니다.undo는 인자로 받는것은 없고, 바로 전에 했던 append나 delete를 실.. 2017. 7. 14.
[C 자료구조] Array - Left Rotation 0) 제목Hackerrank 의 Arrays 부분의 Left Rotation 문제입니다.왼쪽으로 배열을 옮긴다! 이런 문제입니다.C언어를 이용하여 풀었습니다. 1) 문제설명배열이 주어지면 그 배열을 왼쪽으로 rotation 시키는 문제입니다. 예를들어 배열 {1, 2, 3, 4, 5, 6} 이 주어지고, rotation이 3이 나오게 되면출력을 {4, 5, 6, 1, 2, 3} 순으로 출력하면 됩니다.처음에 배열의 길이와, rotation의 숫자를 입력 받고배열의 길이만큼 데이터를 입력 받는 형태입니다.2) 풀이과정자료구조 항목의 배열 문제 이지만, 재미있는 알고리즘 문제라고 생각합니다.처음에는 무식하게 "배열을 rotation 숫자만큼 이동하면 되겠다"라고 생각했는데, 잘 읽어보니까 "출력"만 rota.. 2017. 7. 13.
[C 자료구조] Tree - Is This a Binary Search Tree? 0) 제목Hackerrank 의 Tree 부분의 Is This a Binary Search Tree? 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명이진트리(Binary Tree)의 root 노드의 포인터가 파라미터로 주어집니다.주어진 트리가 이진트리(Binary Tree) 인지 이진탐색트리(Binary Search Tree) 인지 검사하는 문제입니다.만약 이진탐색트리라면 true를 아니라면 false를 리턴하는 문제입니다.2) 풀이과정처음에는 단순하게 이진트리 이므로, 재귀함수를 이용하여 각 노드마다 이진탐색 트리의 조건을 만족하는지 체크하면서 함수를 호출하는 방식을 시도했었습니다.그러다가 이진 탐색 트리의 특성을 곰곰히 생각하면서, 다른식으로 접근해보려고 시도했습니다.이진 탐색트리의 특성은 "왼.. 2017. 7. 11.
[C++ 상속/virtual] Virtual Functions (가상함수) 0) 제목Hackerrank 의 C++>Introduction 부분의 Virtual Functions 문제입니다.C++ 이용하여 풀었습니다.기초 클래스 = 상위 클래스 = 슈퍼 클래스 = 부모 클래스유도 클래스 = 하위 클래스 = 서브 클래스 = 자식 클래스. 1) 문제설명기초클래스 즉 부모클래스인 Person 클래스를 만들고, Person 클래스를 상속하는 유도 클래스 즉, 자식 클래스를 상속을 통해서 Professor 클래스와 Student를 만들어서 주어진 input을 받아서output 형태 대로 출력하는 문제입니다.main 함수 내에 input과 output의 형태는 주어졌습니다. hackerrank에서 제공되어있는 form 이 있으므로, 여기에 올리지는 않겠습니다.제가 작성할 수 있는 코드 부분.. 2017. 7. 10.