본문 바로가기

분류 전체보기

(72)
[C/C++] 카드2 (백준 2164) 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로..
[C/C++] 랜선 자르기 (백준 1654) 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm 은 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른..
[C/C++] 수 찾기 (백준 1920) 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 입력 5 4 1 5 2 3 5 1 3 7 9 5 출력 1 1 0 0 1 풀이 이제 본격적으로 이분 탐색을 사용해서 문제를 풀게 되었습니다. 제한시간 때문에 이분 탐색..
[Node.js] 넌적스 오늘 뷰 엔진 종류를 두 가지 알게 되었다. 하나는 퍼그라고 HTML에 아주 간략화한 형태의 엔진이고 하나는 넌적스라고 해서 기본적인 HTML 형식에서 조금 더 발전해서 다양한 기능을 사용할 수 있는 엔진이다. 일단 내가 보고 있는 책의 기본적인 예제 진행방식을 넌적스로 잡았기 때문에 넌적스에 관해서 간단하게 포스팅해보겠다. 넌적스는 퍼그의 HTML 문법 진화에 적응하기 힘든 사람에게 적합한 엔진으로 파이어폭스를 만든 모질라에서 만들었다. 연결 const nunjucks = require('nunjucks') ... app.set('port', process.env.PORT || 3000); app.set('view engine', 'html'); nunjucks.configure('view', { ex..
[코테 공부] solved.ac 공부를 하던 와중에 백준에서 뭔가 싶어서 눌러보니 이런게 나왔다. 대충 알아보니 백준이랑 연동해서 자신의 랭킹?을 볼 수 있는 것 같아서 나도 해보았다. 이런식으로 난이도 별로 문제도 존재해서 골라서 푸는게 가능하다.데 내가 꽤 푼 줄 알았는데 좀 터무니 없이 문제량이 많기는 한가보다... 그리고 이 단계에 조금 맞지않는 점이 있는데 이 문제중에서 엄청난 부자2와 긴자리계산인가 검증수인가는 C++로는 풀기가 그렇게 어렵다고 하더라... 그래서 사람들이 python으로 풀라고 하는데 이미 C++에 익숙해져버린 나는 별 수가 없지만... 일단은 넘어갔다. 백준과 연동하면 몇 문제를 풀었는지 그리고 자신의 등급에 대해서 알 수가 있다. 현재 실버 4이다... 역시 성장하는데는 한참 걸리나 보다 문제를 보면 그..
[C/C++] 나이순 정렬 (백준 10814) 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 입력 3 21 ..
[C/C++] 단어 정렬 (백준 1181) 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 입력 13 but i wont hesitate no more no more it cannot wait im yours 출력 i im it no but more wait wont yours cannot hesitate 풀이 일단 지금은 정렬을 공부하는 ..
[C/C++] 좌표 정렬하기 2 (11651) 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입력 5 0 4 1 2 1 -1 2 2 3 3 출력 1 -1 1 2 2 2 3 3 0 4 풀이 분명 아까와 다른 문제라는 것을 미리 명시하고 시작하도록 하겠다. 그래도 거의 비슷한 문제다. 정말 한 글자만 바꾸니 바로 해결이 가능하긴하다. 일단 이번에..