분류 전체보기(222)
-
[Hash] Group Anagrams
Anageam은 주어진 자음들로 위치를 바꾸어 만들 수 있는 글자를 말한다. 여기서는 anagram에 따라 원소를 그루핑하라는 문제이다. 예컨데 eat, tea, ate는 모두 a, t, e를 사용했으므로 같은 그룹으로 묶어주면 된다. 따라서 배열에 대해 Loop를 실행하면서 원소를 모두 split하여 sort한 값이 같은 애들끼리 묶어주면 된다. dic[w]가 기존에 있던것과 같다면 그대로 입력해주면 된다. 실제 콘솔을 확인해보면 다음과 같은 형태로 묶이게 될 것이다.
2021.03.27 -
[Array] Rotate Image
2차원 배열을 오른쪽으로 90도 돌리는 문제다 사실 바로 90도를 돌리는 것보다, reverse처리를 해준 후 행과 열을 맞바꿔주면 된다. 이렇게 하면 간단하다
2021.03.27 -
[Array] Product of Array Except Self
자기 자신을 제외한 나머지 원소들의 곱을, 새로운 배열의 같은위치 원소로 설정하라는 문제이다 두 파트로 나누어 설명할 수 있다. 우선 answer = [1, 1, 1, 1] 배열을 만들어준다 첫번째 for문은 각 항목에 연쇄적으로 이전 배열 원소를 곱해주도록 만든다. 이때 Answer의 원소는 모두 1이므로, 최종적으로 [ 1, n1, n1*n2, n1*n2*n3 ]의 배열이 만들어진다. 이제 거꾸로 Loop를 돌리면 된다. 이때 주의할 점은 정방향때처럼 기준이 되는 A1이 없으므로 right라는 임의의 요소를 곱해준다는 점 뿐이다.
2021.03.27 -
[DP] Palindromic Substrings
Palindrome은 거꾸로 읽어도 똑같은 string이라고 한다. 예시를 보면 원소 한개는 palindrome이라고 생각하고, 그 외에 palindrome한 조합의 갯수를 찾는것으로 보인다. 전형적인 DP문제이다. s가 n개라고 할때, 0부터 n까지의 모든 케이스에 대해 palindrome이 있는지 찾으면 된다. 이 과정에서 시작위치를 left, 끝위치를 right로 두었다. 다섯글자로 구성된 s가 input으로 들어온다고 가정해보자. for문에서 검사하는 조합은 ( i , i )와 ( i , i+1) 이다. 따라서 검정색 동그라미로 표기된 조합은 Palindrome여부에 대한 검사가 가능하다. 그림에서 x로 표기된 조합은 검사할 필요가 없다. 시작위치가 끝위치보다 크기 때문이다. 문제는 for문에서 ..
2021.03.27 -
[Hash] Top K Frequent Elements
배열과 K가 input으로 들어왔을때, 가장 frequently하게 나타나는 원소를 k개 리턴하라는 문제이다 간단하지만 hash를 이용한다는 점에서 기억할만하다 hash를 이용함은 결국 dictionary, 즉 key-value값으로 데이터를 관리한다는 뜻이다. hash라는 객체에 number-빈도로 데이터를 저장한다 그 뒤, 이 객체에 대해 value기준으로 내림차순 정렬한다. value가 큰 순서대로 k개를 세서 리턴해주면 된다.
2021.03.27 -
[Tree] Kth Smallest Element in a BST
Tree와 index k 가 주어졌을때 k번째로 작은 node는 무엇인지 구하라는 문제 간단한 DFS문제이다 DFS순서에 따라 이진트리의 value를 정렬하면 내림차순으로 정렬된다
2021.03.27