개발 57

백준 1208번: 부분수열의 합 2 (Python)

문제N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오해설발상이 어려웠던 문제다. 수열의 최대 크기가 40인데, 백트래킹(브루트포스)로 전체 경우를 구하게 되면 O(n^40)으로 시간초과가 발생한다. 이때, 수열을 절반으로 나누어 각 수열마다 O(n^20) + O(n^20) 의 시간복잡도를 가지게 하면 시간 내에 풀 수 있게 된다. 먼저, 다음과 같이 길이가 10인 수열이 있고, 합이 0이 되는 경우를 구한다고 가정해보자.# Input10 01 2 3 4 5 -1 -2 -3 -4 -5 먼저 수열을 절반으로 나눌 것이다.그러면 다음과 같이 left, right 두 개의 리스트를 얻을 수 있다. # lef..

개발/백준 2022.09.03

[MySQL] 비번 맞게 쳤는데 계속 틀렸다고 할 때 해결 방법

또 시작된 맞왜틀이다. 맞는데 왜 틀려? 코드 상에서 MySQL에 접속했을 때는 분명 접속이 잘 됐는데, 콘솔에서 하려고 하니까 로그인이 안되는 신기한 현상이다. ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: YES) 이 에러 메시지는 로그인 비밀번호를 잘못 입력했을 때 나온다. 비번을 잊어버렸을 때 또는 로그인이 안될 때 SQL에 접속할 수 있는 방법을 정리해본다. STEP 1. cmd를 관리자 권한으로 실행 관리자 권한으로 실행해주도록 하자. STEP 2. cmd에서 MySQL의 bin 폴더가 있는 곳으로 이동하기 STEP 3. MySQL 서비스 중지시키기 net stop mysql STEP 4. 인증 스킵 ..

개발/Web 2022.09.03

[React 공부] Typescript를 쓰는 이유와 기능

자바스크립트는 관대하다. 개발자가 Type을 지정하지 않아도, Undefined된 오브젝트를 사용하려고 해도 '일단은' 군말없이 받아준다. 그러나 사소한 규칙 위반이 쌓여 도저히 다룰 수 없을 지경이 되면 문제는 그 때부터 시작된다. 테스트 단계에서는 됐는데 배포하니까 사이트가 터졌는데요? 왜 사용자 전화번호가 number로 넘어온건가요? 사용자 이름이 undefined로 출력되는데 어떡하죠? ... 바닐라 JS는 컴파일 전에 코드를 검사하지 않는다. 따라서 우리가 무언가 잘못됐음을 직감하는 시기는 실제로 사이트가 돌아가는 와중일 가능성이 높다. 그리고 자료형(Type) 등을 엄밀하게 따지지 않는다는 점 때문에 개발 단계부터 무언가 잘못 쓰기 시작하면 문제를 알아채는 시기는 프로젝트 규모가 커진 이후가 ..

개발/Web 2022.08.25

백준 16948: 데스 나이트 (Python)

문제게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크기가 N×N인 체스판과 두 칸 (r1, c1), (r2, c2)가 주어진다. 데스 나이트가 (r1, c1)에서 (r2, c2)로 이동하는 최소 이동 횟수를 구해보자. 체스판의 행과 열은 0번부터 시작한다. 데스 나이트는 체스판 밖으로 벗어날 수 없다.해설 너비 우선 탐색(BFS) 로 풀 수 있는 문제이다. 체스 시리즈인 N-queen, 비숍, 나이트의 이동 중에서는 비교적 쉬운 축에 속하는 문제라고 생각한다. 데스 나이트의 이동방향을 dx..

개발/백준 2022.08.24

백준 12849: 본대 산책 (Python)

문제숭실 대학교 정보 과학관은  캠퍼스의 길 건너편으로 유배를 당했다. 그래서 컴퓨터 학부 학생들은 캠퍼스를 ‘본대’ 라고 부르고 정보 과학관을 ‘정보대’ 라고 부른다. 준영이 또한 컴퓨터 학부 소속 학생이라서 정보 과학관에 박혀있으며 항상 본대를 가고 싶어 한다. 어느 날 준영이는 본대를 산책하기로 결심하였다. 숭실 대학교 캠퍼스 지도는 아래와 같다.(편의 상 문제에서는 위 건물만 등장한다고 가정하자)한 건물에서 바로 인접한 다른 건물로 이동 하는 데 1분이 걸린다. 준영이는 산책 도중에 한번도 길이나 건물에 멈춰서 머무르지 않는다. 준영이는 할 일이 많아서 딱 D분만 산책을 할 것이다. (산책을 시작 한 지 D분 일 때, 정보 과학관에 도착해야 한다.) 이때 가능한 경로의 경우의 수를 구해주자.해설다..

개발/백준 2022.08.23

백준 2470: 두 용액 (Python)

문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액이..

개발/백준 2022.08.21

백준 2467: 용액 (Python)

문제 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 해설 투 포인터를 활용해 풀 수 있는 정석적인 문제이다. 위 문제의 경우 브루트포스 방식으로 풀 때 O(N^2)의 시간복잡도를 가지게 되어 시간초과가 뜨지만, 투포인터를 활용하면 O(N)에 풀 수 있다. 해당 문제는 입력 단계에서 리스트가 오름차순 정렬되어 있다. 따라서 리스트에 바로 투포인터를 적용해 풀면 된다. 포인터가 움직이는 방식은 다음과 같다. left + right > 0 : 두 용액의 합이 양수이므로, 0에 가까워지려면 오른쪽을 당겨야 한..

개발/백준 2022.08.20

MySQL 설치 에러: Can not perform keyring migration

mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option. MySQL 설치 방법 포스팅을 쓰다가 이것저것 건들다보니 에러가 발생해버렸다. 에러 해결법을 구글링한 결과다. ⚠️ 주의사항!! 아래 방법으로 진행 시 data 폴더를 삭제하는 경우 데이터가 날아갈 수 있다. 가급적 설치 단계에서 오류가 발생한 경우에 이 방법을 따르고, 아니라면 데이터 백업을 해둔 후 시도하도록 하자. [*8월 19일 추가] 'net start mysql' 명령어를 한번 시도해보자. MySQL 프로세스가 중지 상태일 때 저 문제가 뜨는 것 같기도 하다. 1. MySQL 설치경로 복사 2. cmd 관리자 권한으로 실행 3. 'MySQL..

개발/Web 2022.08.19

[Windows] MySQL 압축파일(zip) 설치 방법

개요 가장 널리 사용되고 있는 오픈소스 DBMS인 MySQL을 설치해보자. 설치부터 cmd를 통해 DB에 접속하는 과정까지 함께 다뤄보려 한다. 설치 과정 MySQL 다운받기 1. MySQL 공식 다운로드 페이지 접속 https://www.mysql.com/downloads/ MySQL :: MySQL Downloads MySQL Cluster CGE MySQL Cluster is a real-time open source transactional database designed for fast, always-on access to data under high throughput conditions. MySQL Cluster MySQL Cluster Manager Plus, everything in My..

개발/Web 2022.08.18

[React 공부] Styled component 알아보기

개요 "Use the best bits ES6 and CSS to style your apps without stress" 라는 문구가 눈에 띈다. ES6와 CSS가 어떻게 한 문장에서 함께 쓰일 수 있는 것일까. 그것은 바로 'CSS in JS', 즉 JS 안에서 스타일의 수정을 즉시 가능하도록 하는 Styled Component의 매커니즘 때문이다. 일반적으로 이전까지의 웹 개발 방식은 HTML과 CSS, JS 모듈을 각각 다른 파일에 분리하여 두는 것이 최선의 방책으로 여겨졌으나, React를 필두로 한 컴포넌트 기반의 모던 개발 방식이 인기를 끌면서 한 컴포넌트에서 HTML, CSS, JS를 모두 해결할 수 있는 개발 방식이 주류가 되었다고 한다. Styled Component의 기본 문법을 보며..

개발/Web 2022.08.17