주어진 triangle 삼각형의 상단에서 하단까지의 최소 경로 합계를 계산하는 문제이다. 행 triangle 에 해당하는 dp 배열을 생성하고 첫번째 행은 초기화한다.
모바일 웹에서 영상을 백그라운드로 사용하면 효과적인 브랜딩을 할 수 있다. 보통 진입하자마자 보여지는 hero 섹션(혹은 랜딩 섹션)에 배치하여 강한 임팩트를 준다. 이번 프로젝트에서는 모바일 웹에서 스플레시 영상과 백그라운드 영상 테스트를 회고해 본다.
입력값 s 문자열에 대해 대소문자 구분하는 모든 문자열 조합을 찾는 문제이다. 모든 조합을 찾는 문제이므로 dfs를 쉽게 연상할 수 있었고, 숫자와 문자를 구분하여 문자열일 경우 upperCase와 lowerCase 각각 dfs를 호출한다.
프로젝트를 진행하다보면 모바일 웹 애플리케이션을 최적화하기 위해 엑세스 환경을 확인해야 할 때가 있다. 유저 에이전트를 확인하면 콘텐츠와 레이아웃을 사용자 디바이스에 맞게 조정하여 더 나은 사용자 경험을 제공하여 웹 사이트 성능을 향상시킬 수 있다.
입력받은 nums 배열의 요소의 모든 순열을 생성하기 위해서 재귀적으로 permuted 함수를 호출한다. 1부터 n까지 k자리수까지 조만들기 문제 응용해서 접근해 보았다.
116. Populating Next Right Pointers in Each Node 완전 이진 트리에서 next 포인터에 동일 레벨의 인접한 다음 노드를 추가하는 문제이다. 트리는 언제 나와도 당혹스러운 것 같다. 반복해서 익숙해지는 수 밖에..
3. Longest Substring Without Repeating Characters 주어진 문자열에서 중복되지 않는 가장 긴 부분 문자열의 길이를 반환한다.
다국어로 된 문제인데, 폴란드? 언뜻보면 돌려보면 단순한 사칙연산 같지만 큰 수 연산에 대한 문제이다. 5,000 자릿수까지 올 수 있기 때문에 javascript에서 number의 범위를 벗어나 문자열로 처리하여 해결하였다.
요즘은 특히 모바일 웹 퍼블리싱 작업이 많았다. 보통은 정적 호스팅을 하거나 서버에 올려서 확인했는데, 보안 문제 때문에 간단히 Mac에서 live server로 띄운 localhost를 모바일로 띄워서 테스트를 진행했다.
스도쿠는 즐겨하는 게임이어서 코드로 접근하는 것도 재밌었다. 2차원 배열의 9*9 배열이 주어진다. 스도쿠의 기본 룰에 따라 1*9 가로줄, 9*1세로줄, 3*3서브 박스에 1-9까지 숫자가 한번씩만 들어간다.
1부터 n까지 k자릿수 수열만들기 문제이다. 수열 문제는 처음에 접근하기가 쉽지 않았는데, 여러 문제를 풀면서 공식을 익히니까 조금씩 눈에 들어오는 것 같다.
200. Number of Islands 200. Number of Islands 문제 테스트 케이스 풀이 변수 'islandCounts'로 섬의 갯수를 카운팅한다. 반복문으로 셀을 방문하면서 1(육지) 또는 0(바다)인지 확인한다. 육지를 발견했으니 islandCounts를 하나 증가시킨다. 발견한 육지(일부)를 시작으로 dfs를 반복해 상하...
레벨 순서 순회(level-order)는 모든 노드를 낮은 레벨부터 차례대로 순회한다. 레벨 순서 순회는 너비 우선 순회(breadth-first traversal)라고도 한다.
전위 순회(preorder)는 다음과 같은 방법으로 진행한다.노드를 방문한다.왼쪽 서브 트리를 전위 순회한다.오른쪽 서브 트리를 전위 순회한다. 전위 순회는 깊이 우선 순회(depth-first traversal)라고도 한다.
앞으로 읽으나 뒤로 읽으나 동일한 문자열을 펠린드롬(palindrome), 회문이라고 한다. 주어진 s문자열을 이용하여 가장 긴 회문을 반환하는 문제이다.
링크드 리스트에 사이클이 존재하면 사이클의 시작노드를 반환하고, 사이클이 존재하지 않는다면 null을 반환하는 문제이다. 주어진 링크드 리스트에 사이클 유무를 알기 위해서 일명 토끼와 거북이 알고리즘을 사용한다.
정렬된 두 배열nums1, nums2을 nums1에 병합하는 문제이다. 둘 중 한 배열은 최종적으로 병합될 m + n의 length를 가지고 있고, 나머지는 0으로 채워진다.
각 셀마다 상한 오렌지, 신선한 오렌지, 빈 칸이 주어진다. 매 분이 지날 때마다 상한 오렌지에서 4방향으로 인접한 신선한 오렌지가 감염된다고 가정할 때 인접한 모든 오렌지가 상할 때 걸리는 시간(분)을 구하는 문제이다.
링크드 리스트에서 끝에서 `n`번째 노드를 삭제하는 문제이다. 단 한 번 순회하여야 하고, 전체길이를 모른채 `n`번째 노드를 삭제하기 위해 두 포인터를 이용한다.
이미 정렬되어 있는 배열의 두 수 합이 target이 되는 두 요소의 인덱스를 찾는 문제이다.인덱스는 1-based, 1부터 시작하므로 결과 배열에서 1씩 더해주면 된다.