링크 : https://www.hackerrank.com/challenges/flipping-bits/problem 문제> uint32의 데이터를 받아 이진 표현으로 비트를 뒤집어 얻은 부호없는 정수목록을 출력할것. (ex : Take 1 for example, as unsigned 32-bits is 00000000000000000000000000000001 and doing the flipping we get 11111111111111111111111111111110 which in turn is 4294967294.) 해결방법. uint32 범위(0 ~ 4,294,967,295) uint32의 MaxValue에서 받은 값을 빼면 뒤집은 값이다. uint의 MaxValue(4,294,967,295) ..
링크 : https://www.hackerrank.com/challenges/tree-postorder-traversal/problem 문제> 입력받은 트리를 postOrder로 출력할것. 해결방법. postOrder는 후위운행. 왼쪽노드 -> 오른쪽노드 -> 자신 노드 순으로 탄다. 재귀호출사용. /* you only have to complete the function given below. Node is defined as struct node { int data; node* left; node* right; }; */ void postOrder(node *root) { if(root == NULL) return; postOrder(root->left); postOrder(root->right); ..
링크 : https://codility.com/programmers/lessons/7-stacks_and_queues/stone_wall/ 문제> 벽을 세워야 한다. 벽은 N미터로 두께는 일정하지만 다른 장소에서는 다른 높이를 가져야한다. 벽의 높이는 N개의 양의 정수로 이루어진 배열 H. H[0]은 벽의 왼쪽 끝의 높이, H[N-1]은 벽의 오른쪽 끝의 높이이다. 벽을 구축하는데 필요한 최소 블록 수를 계산하라. 해결방법. * H[N미터] = 높이. * H[i+1]이 H[i]가 보다 크다면 벽은 점점 높아진다.(새로운 블록이 생긴다.) < 이부분을 체크하면 된다. * H[i+1]이 H[i]가 보다 작다면 벽을 닫는다. 1) 길이를 체크할 스택생성. 2) 0부터 N까지 반복. - 만약 스택이 0이면 Pu..
링크 : https://www.hackerrank.com/challenges/mars-exploration/problem 문제> S O S로 순서대로 입력되는 반복신호 중 신호와 다른 값이 들어온 수를 출력할것. 해결방법. 1) 순차 원본신호(S O S)를 받아놓고 문자 단위로 순서대로 입력 문자열 비교. - 비교 중 다른값이면 카운트 증가. - 비교 후 원본신호 수 만큼 입력 문자열을 삭제하고 다시 원본신호와 비교. - 문자열의 문자수가 원본신호보다 크거나 같은 동안 반복. using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static void Main(String[] ar..
링크 : https://www.hackerrank.com/challenges/correctness-invariant/problem 문제> * 제대로 정렬된 값이 출력되게 코드를 수정할 것. * 루프불변자에 대한 설명을 이해하라고 낸 문제인듯. - 루프불변자 : 자료구조론에서 알고리즘을 검증하는데 쓰이는 개념. 반복마다 만족해야 하는 성질이다. - 루프가 항상 참을 만족하는 조건이다. Initialization : 루프 실행전(제한 된 의미로) true. Maintenance : 반복 전에 true면, 다음 반복 전에도 true. (항상 참이라는 뜻 같다) Termination : 끝나면 유용한 방법으로 해지? Initialization: It is true (in a limited sense) befor..