본문 바로가기

알고리즘/해커랭크

(30)
[해커랭크] Is This a Binary Search Tree? 문제링크: www.hackerrank.com/challenges/is-binary-search-tree/problem Is This a Binary Search Tree? | HackerRank Given the root of a binary tree, you have to tell if it's a binary search tree. www.hackerrank.com 이진탐색 트리는 왼쪽 서브트리의 모든 값이 노드의 값보다 작고 오른쪽 서브트리의 모든 값은 노드보다 크다 그래서 왼쪽,오른쪽 서브트리의 노드들을 리스트에 담아서 노드의 데이터와 비교하는 방식으로 했다. 해당 내용을 구현하기 위해 어떤 노드의 left와 right를 재귀호출을 통해서 리스트에 담았다. public static boolean ..
[해커랭크] Cycle Detection [JAVA] 문제링크: www.hackerrank.com/challenges/detect-whether-a-linked-list-contains-a-cycle/problem Cycle Detection | HackerRank Given a pointer to the head of a linked list, determine whether the linked list loops back onto itself www.hackerrank.com 처음에 문제를 보고 입력값 범위가 안주어져서 어떻게 풀어야하나 싶었다. 적당한 값으로 갱신하면서 탐색중에 갱신된 그 값을 발견할 경우 싸이클이 있다고 판단해봤는데 통과됐다. 잘못됐다고 생각하고 다른 사람의 풀이를 참고했더니 창의적인 아이디어가 있었다. *잘못된 풀이 // Compl..
[해커랭크] Sparse Arrays [JAVA] 문제링크: www.hackerrank.com/challenges/sparse-arrays/problem Sparse Arrays | HackerRank Determine the number of times a string has previously appeared. www.hackerrank.com 자료구조 학습을 하려는데 자바는 해시관련 함수를 어떻게 쓰는지 파악할 겸 문제를 골랐다. import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution..
[해커랭크] Reverse a doubly linked list [JAVA] 문제링크: www.hackerrank.com/challenges/reverse-a-doubly-linked-list/problem Reverse a doubly linked list | HackerRank Given the head node of a doubly linked list, reverse it. www.hackerrank.com 오랜만에 자료구조를 생각하려니까 머리가 아팠다. 해커랭크에 좋은 자료구조 연습 문제들이 있어서 더 풀어보려 한다. 처음에 head에는 쓰레기 데이터가 있고 next부터 출력하는거라 가정하고 문제를 풀었더니 당연히 틀렸다. 출력을 해보니 모든 노드에는 데이터가 있었다. 풀이법을 말로 설명하는 것보다 코드를 보는것이 깔끔하겠다. // Complete the reverse ..
[해커랭크] Roads and Libraries [JAVA] 문제링크: www.hackerrank.com/challenges/torque-and-development/problem Roads and Libraries | HackerRank Help the ruler of HackerLand determine the cheapest way to give his citizens access to libraries. www.hackerrank.com 모든 노드들을 잇는 최소한의 간선 개수는 노드의 갯수 -1이다. 그래서 도로를 고쳐서 도서관을 공유하는 비용을 최소한 하려면 도로를 N-1개만 고치면 된다. (MST 구성) 고장난 도로를 탐색해서 노드가 몇개인지 파악하기 위해 dfs 탐색을 했다. 또, N-1개의 도로의 수리비용보다 모든 노드에 도서관을 설치하는 비용이 적..
Forming a Magic Square 링크 : www.hackerrank.com/challenges/magic-square-forming/problem Forming a Magic Square | HackerRank Find the minimum cost of converting a 3 by 3 matrix into a magic square. www.hackerrank.com 문제 이해하는데 좀 걸렸다. 잘못 푼걸 알았을때 discussion을 참고했다. def formingMagicSquare(s): magick_squers = [[[8,1,6],[3,5,7],[4,9,2]] ,[[6,1,8],[7,5,3],[2,9,4]] ,[[4,9,2],[3,5,7],[8,1,6]] ,[[2,9,4],[7,5,3],[6,1,8]] ,[[8,3,4],..