목록전체 글 (257)
Joonas' Note
링크: https://www.acmicpc.net/problem/11058출력 결과에 영향을 미치는 연산이 A를 그냥 누르는 거랑(+1), Ctrl-V (+복사했던 크기) 인데 클립보드에 복사해놓은 크기때문에 재귀로 짜는데 애를 먹었다. 복사한 크기만큼 늘어나기 때문에, Ctrl-V 를 하기 위해서는 이전에 Ctrl-A, Ctrl-C 가 꼭 필요하다. 문제에 적힌 연산을 순서대로 A, S, C, V 라고 한다면 N=6인 경우는 아래와 같이 가능하다. AAAAAAAAASCVAASCVVASCVVV 이 정도가 의미있는 타이핑인거같다. 타이핑을 n번한 것을 f(n)이라 하자. 그럼 위 4줄은 각각 f(5)+1, f(3)∗2, f(2)∗3, f(1)∗4 이다. $..
node.js + socket.io로 간단하게 실시간 이벤트 서버를 만들려고 했다.약 3~4년 전에 비슷한 개발을 해봤기에 무리없이 될거라고 생각했으나, 하루종일 삽질했다. 서버단과 클라이언트단의 코드 모두 공식 도큐먼트로 작성하였으니 틀릴리가 없었다. 첨부하자면 아래와 같다.페이지가 로드되면 서버에 연결을 시도하고, 연결되면 test 후 종료하는 테스트 코드이다. 근데 서버쪽에서는 엄청나게 많은 연결이 시도되고 있었다. (서버쪽 화면이 connected!로 도배되고 있었다.) 하지만 이게 웬, 정작 클라이언트쪽 socket 변수의 connected 속성은 false였다.참고로 express는 v4.16.3, socket.io는 v2.1.1, node.js는 v10.6.0 이었다.결론은, 아래 한 줄로 ..
링크: https://www.acmicpc.net/problem/1509문제dp[i] = i번째 위치에서 가능한 팰린드롬 분할의 최소 개수isPaline[i][j] = i j 가 팰린드롬인지 여부 예제에도 끼워져있지만 AABDBADD 와 같은 경우의 처리때문에 여러 경우를 탐색해야한다. 이것을 분할하는 경우는 아래와 같다.A - A - B - D - B - A - D - D A - A - B - D - B - A - DD A - A - BDB - A - D - D A - A - BDB - A - DD A - ABDBA - D - D A - ABDBA - DD AA - B - D - B - A - D - D AA - B - D - B - A - DD AA - BDB - A - ..
링크: https://www.acmicpc.net/problem/3079코드
[이전 블로그]에서 글 옮김 링크: https://www.acmicpc.net/problem/1766풀이처음에는 문제의 접근 방향을 후위순회처럼 생각했다. 어떤 x번째를 하기 위해서 그 이전것을 무조건 해결해야하는 방식. 틀리고 나서 문제를 다시 이해했는데, 깨달은 테스트 케이스부터 말하자면 아래와 같다.5 3 4 1 2 3 5 3 내가 생각한 이 입력의 정답은 아래와 같다.2 4 1 5 3 1번보다 4번을 먼저 풀어야하고, 3번보다 2, 5번을 먼저 풀어야한다. 1번을 풀기 위해서 4번을 풀어야하는데, 같은 우선순위에서 4번보다는 2번이 쉽다. (둘 다 1개의 문제 앞에 있음)2번을 풀고 4번을 풀면, 1번이 풀리고 남은 5번을 풀면 3번이 풀린다. 처음에 생각한 대로라면 4 1 2 5 3 이 나와야하..
Django에서 Summernote Widget을 사용하고 있는데 production 모드 즉, DEBUG=False 인 상태에서 이미지 업로드가 갑자기 안됐다.삽질을 한참 하다가 결론은 Debug -> Production 모드 시 static 파일들과 media 파일들의 제공 방식이 달라진다는 것이다. 디버그 모드에서는 django에서 해주는 것 같지만, 배포 모드에서는 웹 서버로 관리를 넘겨버리는 것 같다. 다시 말해, Nginx나 Apache에서 /static과 /media 경로와 연결되는 디렉토리를 지정해주어야 한다.http://uwsgi-docs.readthedocs.io/...#configure-nginx-for-your-site을 읽어보면, location /static에 alias가 걸려있..
링크: https://www.acmicpc.net/problem/13701문제BOJ 15719 - 중복된 숫자를 비트로 해결하는 풀이와 같다. 엄밀히 말하면 이 문제가 더 먼저 만들어졌다.정확히 같은 풀이이므로 링크로 대체한다.다른 점이 있다면, 표현할 수의 범위가 225가 최대이므로 32비트 정수 배열의 크기가 225 / 32=1 048 576이면 된다.코드
링크: https://www.acmicpc.net/problem/15719문제자료형의 비트를 이용하여 배열을 압축하여 사용하는 방법과, 수학으로 푸는 2가지 풀이를 소개하려 한다.풀이 1 (비트)표현할 정수의 범위는 [0, 10000000]이다. 그리고 필요한 정보는 각 숫자들이 사용되었는가/아닌가 이다.사용되지 않았다면 0, 사용되었다면 1로 표현한다면 숫자 하나의 사용 여부를 하나의 비트로 관리할 수 있다. 즉, 32비트 정수 하나에 32개의 수의 상태를 담을 수 있다.그럼 배열의 크기는 ⌈10 000 000/32⌉=312 500만큼 필요하다. 코드는 훨씬 간단하다.코드 풀이 2 (수학)1부터 n−1까지의 수가 골고루 등장한다. 등장한 모든 수의 합을 \(S..