수학이나 과학 쪽에 그래픽화 할 것들이 많은 것 같다. 내가 이과라서 그런 걸 수도 있겠지만... 이번에는 사이클로이드를 그려보기로 했다. 옛날 수학 시간에 지오지브라라는 툴을 이용해 그래프를 그리고 시뮬레이션 하는 시간이 있었던 것 같은데 그런 느낌으로 만들어 봤다.
문제조건에 따르면 작업을 수행하고 있지 않을 때는 먼저 요청이 들어온 작업부터 처리해야 한다. 작업을 처리하는 동안 요청이 들어오면 따로 저장해 두었다가, 처리 시간이 짧은 작업부터 처리하면 된다. 전체 처리 시간을 줄여야 하는데 대기 중인 작업이 있는 동안 처리하는
크게 두 가지 목표가 있었다. 일단 canvas를 좀 활용해 보고 싶었고, 불멍, 물멍처럼 가만히 보고 있을 수 있는 애니메이션을 만들어 보고 싶었다. 그런데 태생이 이과라 그런지 온갖 파동함수들이 떠올랐고 물질파 같은 걸 만들면 나름 괜찮을 것 같았다. 생각해보니 리
문제 풀이 원본에서 번역이 누락된 조건이 있는데, "한 번 지나간 선 위로 다시 그릴 수 있다". 효율성 테스트는 따로 없지만 좌표가 2차원이고 최대 100,000번 그리므로 시간복잡도를 고려해야 한다. 그리면서 지나간 점과 선의 개수만 세면 오일러 공식을 이용해
슬라이딩 퍼즐이라는 대중적인 퍼즐이 있다. 사각형 격자에 배치된 타일을 이리저리 밀며 제자리를 찾아주는 퍼즐이다. 원래는 1부터 15까지의 수를 순서대로 배열하는 퍼즐인데 이걸 어떻게 변행해 볼 수 있을까? 내 선택은 숫자 대신 알파벳을 배치해서 퍼즐의 정답을 없애 버
문제출발 지점만 다르고 도착 지점이 모두 같기 때문에 도착 지점에서부터 BFS로 바로 풀 수 있다.리포트가 새로 발행되는 바람에 갑자기 쉬운 문제를 추천해주는 건가 했는데 이 문제가 의외로 정답률이 39%밖에 안 되는 거였다.
한자는 뭔가 한 글자 한 글자가 그림처럼 느껴지는 면이 있다. 익숙한 글자는 그림보다 글자로 받아들이기 때문에 이런 점이 덜한데, 모양이 복잡하거나 여러 선이 섞여 있는 글자일수록 의미보다 구조에 집중하게 된다. 익숙한 글자더라도 변화를 주어 한 번에 의미를 파악하기
문제효율성 테스트를 통과하기 위해서 알고리즘을 잘 세워야 한다. 투 포인터 알고리즘을 이용해서 통과했다. 구매를 시작하는 진열대와 종료하는 진열대의 인덱스를 각각 포인터로 삼아서 선택된 구간의 보석 수를 딕셔너리로 저장한다. 이때 구매하지 못한 보석이 있다면 오른쪽 포
처음 수박 게임에서 영감을 얻었다고 했던 걸 기억하시는가. 실제 수박 게임은 Matter.js 라고 하는 2D 물리엔진 라이브러리를 이용해서 만들었지만, 나는 그런 건 모르겠고 그냥 바닐라 JS로 만들어 버렸다. 만들고 싶었던 건 고무공 같은 오브젝트가 이리저리 튀어다
문제배열 길이가 20 밖에 안 되기 때문에 브루트 포스로도 충분히 풀 수 있다.열쇠가 자물쇠 영역을 벗어날 수 있으며 회전할 수 있다는 점에 유의하여야 한다.자물쇠를 좌표축으로 삼고, 열쇠를 회전하고 평행이동하는 모든 경우를 반복하였을 때 자물쇠가 1로만 이루어지는 경
문제순서를 알고 있기 때문에 내가 원하는대로 대진을 짝지을 수 있다. 그러므로 크기 순으로 배열한 뒤 하나씩 짝지어 가며 이길 수 있는 숫자 쌍의 개수를 세면 된다.더 지니어스에 나온 흑과 백이라는 게임이 생각나는 문제였다. 물론 이 문제는 수를 내는 순서가 모두 공개
문제DP로 $O(N)$에 풀었다. i번째 원소로 끝나는 수열의 최댓값을 기준으로 삼았으며, i번째 원소에 1이 곱해지는 경우와 -1이 곱해지는 경우가 있으므로 2차원 배열에 저장했다.만약 i-1번째 원소로 끝나는 수열의 최댓값이 음수라면 i번째 원소부터 더하는 것이 더
문제동적계획법으로 풀면 되는데, 집이 원형으로 배열되어 있어 1번째 집과 N번째 집이 서로 이웃한다는 점에 주의해야 한다. 1번째 집을 터는 경우 N번째 집을 털 수 없고, 1번째 집을 털지 않는 경우 N번째 집을 털 수 있다. 그래서 집이 선형으로 배열되어 있다 가정
문제단순 탐색은 절대 불가능... (배열 길이가 최대 200,000인데 단순 탐색하면 $O(nk)$이라 시간 초과되어 효율성 테스트를 통과할 수 없다.)그렇다고 DP도 아닌 것 같고, 슬라이딩 윈도우로도 시간 복잡도는 못 줄일 것 같고... 결국 도저히 어떻게 풀지 모
문제합, 정렬, 순회를 여러번 해야 해서 깔끔하게 짜기가 어려웠다. 정렬 과정에서 heapq를 쓰긴 했는데 이 문제에서는 곡 수가 최대 10,000이라 내장 sort 함수를 써도 괜찮을 것 같다.분명 어제 스타 수열도 레벨 3, 이 문제도 레벨 3인데 난이도 차이가 상
문제최대 길이가 500,000이므로 $O(n^2)$으로는 불가능하다. 그러니 뭔가 기준을 잡아야 하는데, 교집합의 원소를 기준으로 삼았을 때 스타 수열의 최대 길이는 그 원소 개수의 2배이므로 이를 이용했다. 이런 식으로 집합의 원소 개수가 필요할 때 collectio
문제오늘은 문제가 너무 안 풀려서 잠깐 머리 식힐 겸 글부터 쓰고 있다.일단 문제의 조건을 이해하는 것부터 시작하면, 중위 순회 하면서 노드를 0과 1로 치환해서 얻은 이진수가 트리와 일대일대응 된다. 하지만 직접 순회하기에는 제한 사항이 애매해 보여서 DP로 풀어보고
문제n이 최대 백만이길래 혹시나 하는 마음으로...알고리즘은 맞는데 아깝게 시간 초과가 걸렸다. 위 방식은 최댓값을 1씩 깎는 방식인데, 이 때 야근 지수가 최소가 됨은 아래에 의해 보장된다.$$V(X)=E(X^2)-{E(X)}^2$$야근 지수는 제곱의 합인데, 단순
문제아이디어는 간단하다. 임의의 노드를 루트로 잡아서 후위 순회를 하는데, 문제에 주어진 방식대로 자식을 0으로 만들기를 반복하여 루트 노드가 0이 되면 누적된 횟수를, 아니면 -1을 출력하면 된다. 그런데 반드시 트리를 이루는 것이 보장되므로 최초 가중치의 합이 0이