Old

    백준 2110번 공유기 설치 // C++

    백준 2110번 공유기 설치 // C++

    문제 공유기 설치 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌..

    백준 2485번 가로수 // C++

    백준 2485번 가로수 // C++

    문제 직선으로 되어있는 도로의 한 편에 가로수가 임의의 간격으로 심어져있다. KOI 시에서는 가로수들이 모두 같은 간격이 되도록 가로수를 추가로 심는 사업을 추진하고 있다. KOI 시에서는 예산문제로 가능한 한 가장 적은 수의 나무를 심고 싶다. 편의상 가로수의 위치는 기준점으로 부터 떨어져 있는 거리로 표현되며, 가로수의 위치는 모두 양의 정수이다. 예를 들어, 가로수가 (1, 3, 7, 13)의 위치에 있다면 (5, 9, 11)의 위치에 가로수를 더 심으면 모든 가로수들의 간격이 같게 된다. 또한, 가로수가 (2, 6, 12, 18)에 있다면 (4, 8, 10, 14, 16)에 가로수를 더 심어야 한다. 심어져 있는 가로수의 위치가 주어질 때, 모든 가로수가 같은 간격이 되도록 새로 심어야 하는 가로..

    백준 9663번 N-Queen // C++

    백준 9663번 N-Queen // C++

    문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 풀이 N-Queen 문제는 대표적인 Back Tracking 문제이다. 체스에서 Queen은 가로, 세로, 대각선 중 원하는 방향으로 쭉 움직일 수 있다. 초록색과 같은 위치에 Queen이 놓이게 되면, 파란색으로 칠해진 가로 세로 대각선 방향에는 다른 Queen을 놓을 수 없게 된다. 이 때, Queen을 n개만큼 놓을 수 있는 경우의 수를 모두 출력하면 된다. dfs와 비슷한 느낌으로 풀면 되..

    백준 10867번 중복 빼고 정렬하기 // C++

    백준 10867번 중복 빼고 정렬하기 // C++

    문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 입력 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다. 풀이 입력되는 수가 최대 10만개이고, 수의 범위가 -1000 ~ 1000까지로 매우 작기 때문에 sort를 사용하는 것보다 어떠한 수를 입력받았는지 확인해서 출력하는 것이 더 빠르다. 오름차순으로 정렬한 결과를 출력해야 하기 때문에 음수와 양수를 각각 boolean 배열을 이용하여 입력받았는지를 확인하여 출력하였다. 코드 더보..

    백준 1406번 에디터 // C++

    백준 1406번 에디터 // C++

    문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) D 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨) B 커서 왼쪽에 있는 문자를 삭제함 (커서가 문장의 맨 앞이면 무..

    Node.js 설치(NVM)

    Node.js 설치(NVM)

    Node.js는 구글에서 공개한 소프트웨어로, V8 엔진을 이용한 자바스크립트 런타임 도구이다. NVM(Node-version manager)을 이용하여 Node.js를 설치해보자. 1. NVM 설치 https://github.com/coreybutler/nvm-windows/releases 위의 주소에 접속하여 nvm-setup.zip을 다운로드 받은 뒤, 실행 파일을 실행하면 된다. NVM이 성공적으로 설치되었는지를 확인하기 위해, cmd를 실행시켜 다음 명령어를 입력해보자. $ nvm -v 성공적으로 설치가 되었다면 위와 같은 문구를 확인 할 수 있다. 2. Node.js 설치 $ nvm install x.x.x(version) 설치하고자 하는 버전을 입력하여 설치를 하면 된다! 3. Node.js..

    React란?

    React란?

    1. Web Framework "동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다." - Wikipedia 다시 말해 재사용을 위해 여러 함수의 모음인 라이브러리에 개발을 위한 틀인 뼈대가 추가된 것이라고 볼 수 있다. 2. React 리액트의 특징은 다음과 같다. - 컴포넌트(component)라는 작은 코드 블록들로 화면이 구성되어 있어 유지보수가 용이 - 가상(virtual) DOM을 사용한 빠른 화면 출력 (https://bit.ly/2Rr0Wz7) - 리액트 네이티브를..

    백준 16397번 탈출 // C++

    백준 16397번 탈출 // C++

    문제 홍익이는 홍익대학교 프로그래밍 경진대회의 출제진이다. 홍익이는 새벽에 문제를 만들던 도중 뒤통수에 느껴지는 고통과 함께 정신을 잃었다. 홍익이는 좁은 방에서 눈을 떴다. 주변을 살펴보니 벽면에는 LED로 된 다섯 자리 십진수 N이, 그 옆에 T, G라는 알파벳과 함께 또 다른 정수 두 개가 쓰여 있었고, 벽 앞에는 버튼 A, B 두 개가 있었다. 버튼을 이리저리 눌러보던 똑똑한 홍익이는 어떻게 해야 방을 탈출할 수 있을지 금방 눈치챘다. 버튼과 수에 대해 홍익이가 알아낸 것은 다음과 같다. 버튼 A를 누르면 N이 1 증가한다. 버튼 B를 누르면 N에 2가 곱해진 뒤, 0이 아닌 가장 높은 자릿수의 숫자가 1 줄어든다. 예를 들어 123→146으로, 5→0으로, 3→5로 변한다. 단, N이 0이면 버..