본문 바로가기

전체 글657

[leetcode] 904. Fruit into Baskets 문제 : https://leetcode.com/problems/fruit-into-baskets/description/ 슬라이딩 윈도우 문제. 인덱스를 가리키는 변수 l(왼쪽), r(오른쪽)을 둔다. tree[l]을 포함하여 수집할 수 있는 최대 범위를 r로 구한다. tree[l ~ r]이 과일종류가 3개 이상이 되기전까지 r을 증가시킨다. r을 구했으면 tree[l]을 포함할 때 수집할 수 있는 최대 과일 수를 구할 수 있다. (l~r 범위) ex) l = 0. r = 4 -> r - l + 1 = 5(0번째 인덱스를 포함하여 수집할 수 있는 최대 과일 수) 다음 탐색 시 tree 배열을 다시 탐색하지 않으려면 구한 범위에서 tree[l]이 아닌 과일의 종류가 무엇인지 알아야하고 이 과일이 가장 나중에.. 2019. 9. 3.
[codeground] 8. 블럭 없애기 codeground - Practice - 연습문제 - 8. 블럭 없애기 문제 : https://www.codeground.org/practice/practiceProblemList 1. i번째 블럭 높이(h) a h b -> 높이가 h인 블럭 없어지는데 걸리는 시간 = h 2. i번째 블럭(h)의 양쪽 블럭이 없어지는데 걸리는 시간 중 최소값 + 1 a h b -> 높이가 h인 블럭 없어지는데 걸리는 시간 = (a, b 중 작은 값) + 1 i번째 블럭이 없어질 때까지 걸리는 시간은 1, 2번 중 최소값이다. int d[n + 2];//d[i] = i번째 블럭이 없어질 때까지 걸리는 시간 즉, d[i] = min(d[i-1] + 1 , d[i+1] + 1, i번 블럭 높이) i 번째 블럭이 모두 없어지.. 2019. 9. 2.
[테트리스] 10. 모바일 - 키보드 입력 방지, 화면 확대 모바일에서도 게임 플레이가 가능하게 화살표 버튼을 구현한 적이 있다. 그러나 문제가 있었다. 일단 화면이 너무 작고, 버튼을 클릭 시 두 번 연속으로 클릭하면 화면이 확대되어 게임이 불가능했다. 그래서 임시 방편으로 화면 확대를 막고 게임화면 크기를 키웠다. // mobile인지 const isMobile = (function() { var userAgent = navigator.userAgent; var isMobile = false; if (userAgent.indexOf("iPhone") > 0 || userAgent.indexOf("iPot") > 0 || userAgent.indexOf("iPad") > 0) { console.log("iPhone or iPot or iPad"); isMobil.. 2019. 9. 1.
[leetcode] 1160. Find Words That Can Be Formed by Characters 문제 : https://leetcode.com/problems/find-words-that-can-be-formed-by-characters/ Map을 이용. 일단 chars 문자열을 모두 방문하면서 { 문자, 개수 }를 map에 저장한다. words 문자열들을 방문하면서 현재 탐색 중인 문자열의 문자도 탐색한다. 탐색 중인 문자가 chars map에 있는지 확인하고 있는 경우 개수를 1개 빼준다. 만약 문자가 map에 없거나 map에 탐색중인 문자의 개수가 0개라면 good string이 아니므로 탐색을 종료한다. good string이 될 수 있는 경우(탐색중인 문자열의 모든 문자들을 탐색완료 시) 문자열의 문자 길이를 정답에 더해준다. N : strings의 개수 / M : strings[i]의 길.. 2019. 9. 1.
[leetcode] 1162. As Far from Land as Possible 문제 : https://leetcode.com/problems/as-far-from-land-as-possible/ BFS로 풀었다. 먼저 grid를 모두 돌면서 land인 부분을 찾아서 queue에 x, y를 저장한다. queue가 빌 때 까지 돌면서 distance를 갱신한다. 탐색 시 x, y 위치에 현재까지 저장된 land와의 거리 + 1로 상하좌우 cell에 갱신가능한지 보아야 한다. 이 때 distance는 가장 가까운 land와의 거리이므로 거리가 아직 세팅되지 않은 경우(아직 어떠한 land와도 거리가 갱신되지 않음)와 거리가 세팅되었다면 이미 세팅된 거리보다 가까운 경우에만 갱신된다. 거리가 갱신된 경우 다시 queue에 현재 위치를 넣어준다. queue가 비었으면 cell의 거리 갱신이.. 2019. 8. 31.
[테트리스] 9. 게임 맵 경계 구분 오랜만에 테트리스 개발. 이번에는 3일전에 등록해둔 이슈를 해결했다. 기존에 테트리스 화면은 위와 같았다. 배경이 핑크이고, 별다른 행열 구분이 없어서 블록이 어디로 떨어지는지 구분하기가 어렵다는 단점이 있었다. 그래서 배경에 행열 구분을 위한 체크무늬(?)의 필요성을 느꼈다. canvas 배경색을 pink에서 white로 변경했다. 배경색을 white로 두고 선을 white로 하니까 별로 안이쁜거 같아서 기본으로 돌아가기로 했다. 그래서 배경색은 white, 선은 black으로 했다. // js/main.js const LINE_COLOR = "black"; // set line color to black $(window).load(function() { console.log("load"); drawW.. 2019. 8. 31.