코딩놀이! HackerRank!! 소개 및 추천(?)
오늘 소개 해드릴 코드 놀이 사이트중 한개인 HackerRank 입니다..!!
이 사이트는.....음....
해커랭크해커랭크(HackerRank)는 소비자와 사업체를 위한 경쟁 프로그래밍 도전에 초점을 둔 기술 기업으로서[1] 개발자들은 주어진 사양에 따라 프로그래밍을 시도함으로써 경쟁한다.[2][3] 해커랭크의 프로그래밍 도전들은 다양한 프로그래밍 언어(자바, C++, PHP, 파이썬, SQL, 자바스크립트 등)로 풀 수 있으며 여러 컴퓨터 과학 분야를 아우른다.[4] 컴퓨터 측에서 프로그래머가 프로그래밍 도전에 대한 해결책을 제출하면 출력의 정확도에 따라 제출 자료의 점수를 매긴다. 프로그래머들은 해커랭크 리더보드 전반에 걸쳐 순위가 매겨지며 사용자 간 경쟁을 유도하기 위해 성취에 기반한 배지가 수여된다. 개개의 프로그래밍 도전들 외에도 해커랭크는 콘텐츠(해커랭크에서는 코드스프린츠/CodeSprints로 부름)를 호스팅하고 있는데 여기에서 사용자들은 정해진 시간 동안 동일한 프로그래밍 도전들로 경쟁하며 행사가 끝날 무렵 순위가 매겨진다. 해커랭크는 경쟁적인 컴퓨터 프로그래밍 내에서 점차 커져가는 게임화 트렌드의 일부로 간주되며[5] 웹사이트의 소비자 측면에서는 코더들이 무료로 사용할 수 있다. |
(출처:위키백과:https://ko.wikipedia.org/wiki/%ED%95%B4%EC%BB%A4%EB%9E%AD%ED%81%AC)
이거 라고 하네요 ㅎㅎㅎㅎ
그냥 알고리즘 이나 사람들이 만든 퀴즈같은걸 여러 프로그래밍 언어로 풀고 점수를 쌓고 자기만족도 하고 경쟁도 하고 그런 사이트 입니다.
더 나아가서는 기업에서 비즈니스 파트너가 되어 온라인 코딩시험을 진행 하기도 합니당 ㅎㅎ
그렇타면 이걸 왜 하냐???뭔재미냐????
라고 생각하실수 있는데요. IT 개발자로서, 개발덕후로서. 퇴근하면 채워지지 않는 엄청난 허전함... 그 뭔가 코드몽키(포프TV참조)가 되어간다는 불안감! 회사에서 돈을벌기위해 짜는 소스가 재미없고 같은일에 반복이라고 느껴질때! 좋은 도움이 됩니다!
정말 아! 그래 코드 짜면서 이렇게 생각해보고 저렇게 생각해보고 문제를 풀었을때 느끼는 성취감!!! 이라고 할수있죠!
그리고, 이걸 풀면서 조금은 도움이 되는?!그런건....바로바로!!!! nOO.., nOO, kOO... 등 여러 IT메이저 회사 에서는 입사 시험볼때 저런 코딩페이지를 통해서 온라인 시험이 치뤄지는건 안.비.밀.! ㅋㅋㅋㅋㅋ
먼저 HackerRank의 메인 화면입니다. (https://www.hackerrank.com).
보는것과 같이 이미 4million의 개발자가 가입되어 있다고하네요 ㅋㅋㅋㅋ
오른쪽 상단에 가입 혹은 로그인을 합니다( 가입, 로그인 못하는 분은 없다고 생각하고 건너 띌게요)
로그인후 주로 사용하는 언어(C#, JAVA, C, 등등)를 클릭하고 간단한 숫자문제를 풀고 Run을하게되면 축하한다는 메세지와 함께
다음 화면으로 넘어갑니다.
위에 보이시는 사진은 해커랭크에서 Dashboard라는 건데요
간단히 내가 도전하고 있는 챌린지나 풀던문제, 나를 위해 추천하는 문제 그런것들이 보여집니다
위 페이지에서 아래로 내리면
이런 것들도 있는데요
알고리즘이나, 데이터 스터럭쳐, 언어별, SQL문 등 연습할수 있는 퀴즈 들이 매우매우 많습니다.
알고 리즘에 한번 들어가보죠!
위 사진에 보시면 Solved(해결한문제), solveChallenge(도전할문제) 가 있습니다.
저렇게 문제에 SolveChallenge에 들어가서 문제를 이것저것 풀이볼수 있어요 ㅎㅎ
아! 이건 와이프 이름으로 새로 가입해서 아무것도 풀어져있지 않은 겁니당 하하하하하 나중에 제 계정에 점수가 높아지면 한번 공개하겠습니다 ㅋㅋㅋ
들어온김에 Easy 난이도에 10점짜리 문제! 93.92퍼센트의 성공률...을보인 Challenge를 풀어보죠 ㅋㅋㅋ
첫번째 연습문제: Compare the Triplets 입니다.
Alice and Bob each created one problem for HackerRank. A reviewer rates the two challenges, awarding points on a scale from to for three categories: problem clarity, originality, and difficulty. We define the rating for Alice's challenge to be the triplet , and the rating for Bob's challenge to be the triplet . Your task is to find their comparison points by comparing with , with , and with .
Comparison points is the total points a person earned. Given and , determine their respective comparison points. For example, and . For elements , Bob is awarded a point because . For the equal elements and , no points are earned. Finally, for elements , so Alice receives a point. Your return array would be with Alice's score first and Bob's second. Function Description Complete the function compareTriplets in the editor below. It must return an array of two integers, the first being Alice's score and the second being Bob's. compareTriplets has the following parameter(s):
Input Format The first line contains space-separated integers, , , and , describing the respective values in triplet . Constraints Output Format Return an array of two integers denoting the respective comparison points earned by Alice and Bob. Sample Input 0 5 6 7
3 6 10
Sample Output 0 1 1
Explanation 0 In this example: Now, let's compare each individual score:
Alice's comparison score is , and Bob's comparison score is . Thus, we return the array . Sample Input 1 17 28 30
99 16 8
Sample Output 1 2 1
Explanation 1 Comparing the elements, so Bob receives a point. The return array is . |
음 역시나 영어는 읽기가.... 하지만 문제에 나오는 영어는 읽다보면 아 저런거군아 하게 됩니다 ㅋㅋ
HackerRank 문제를 풀면서 제 나름 노하우는 슈도코딩(?)을 먼저 짜고 계산식을 생각해 보는겁니다.
문제해석!
1. A 라는 사람이 숫자를 순서대로 3개 적어 낸다.
2. B 라는 사람도 숫자를 순서대로 3개 적어 낸다.
3. 점수판을 만들고 A, B 점수를 표기한다.
4. A라는 사람이 낸 첫번째 숫자와 B라는 사람이 낸 첫번째 숫자와 비교한다!
5. 높은 숫자의 사람에게 1point 준다!(단, 숫자가 같으면 아무도 point를 얻지 못한다)
6. 3번과 4번을 3번 반복한다.
7. A 사람 점수와 B 사람 점수를 보여준다.
*역시 삼세판이죠잉.
자 이제 풀어볼까요? 너무 간단한가요?ㅎㅎ
using 은 알아서! class Solution { // Complete the compareTriplets function below. static List<int> compareTriplets(List<int> a, List<int> b) { int count = 0; int =0; int bobPoint=0; foreach(int a_temp in a) { if(a_temp > b.ElementAt(count)){ alicePoint++; }else if(a_temp < b.ElementAt(count)){ bobPoint++; }else{ //nothing } count++; } return new List<int> {alicePoint, bobPoint}; } static void Main(string[] args) { TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true); List<int> a = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(aTemp => Convert.ToInt32(aTemp)).ToList(); List<int> b = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(bTemp => Convert.ToInt32(bTemp)).ToList(); List<int> result = compareTriplets(a, b); textWriter.WriteLine(String.Join(" ", result)); textWriter.Flush(); textWriter.Close(); } } |
뭐 이렇게 짜도 되고... 여러 방법이 있겟지요 ㅎㅎ
compareTriplets이놈이 문제 해석에3,4,5번을 합니다.
기본적으로 문제 풀때 Main 에 다 넣을수 있지만 객체 지향 프로그램언어는 그에 맞는 대우(?)를 해줘야겠죠?ㅎㅎ
간단한 문제지만 코드에 애정을 부을수록 더 완성도가 높아지고
익숙해지면 애정을 불어넣는것이 습관이되어 항상 완성도 높은 코드를 짤수 있겟죠?ㅎㅎ 노력합시당
이렇게 코드 를 풀고나면 Run Code를 눌러서 기본 Testcase 두개가 통과됩니다.
물론! 기본 문법에러나 답이 맞지않으면 아래와 같은 사진이 뜨고요. 다시 풀어서 RunCode하시면 됩니당.
문제를 다 풀고 완벽한 마음이 생겼다!! 라면 Submit Code를 누르면 아래와 같은 화면이 나옵니다.
조금만 기다리시면!
땅!!!!!!!!! 제일 보기좋은 Congratulations 가 나왔습니다 ㅎㅎ
이번문제는 테스트 케이스가 많네요.
저렇게 모든 문제가 통과되면 Easy는 10점!을 얻습니다.
(문제 난이도에 따라 10,20,30,40,50,100,200,등등의 점수를 얻습니다.)
코드 작성하는곳 아래에
upload code as File 은 IDE(visualStudio, ecllips등) 으로 풀어서 파일형식으로 올릴수도 있습니다.
Test again....custom..input은 내가 인풋을 만들어서 테스트 해볼수 있습니다. 좋은 기능이죠 ㅎㅎ
그리고 문제를 풀고 내계정에서 Hackos를 누르게 되면 내가 풀었던 문제와 얻은 점수 등을 볼수 있어요
그외에.. git과 같이 내가 커밋한 횟수 날자 등등 관리하기 좋은 괜찮은 기능이 많습니다ㅎㅎ
이 글을 보고 한번 따라해보시고 코딩놀이 세계로 빠져드세윱!!!!
그럼이만!!!!!
(출처!: https://www.hackerrank.com)