목록Programming (82)
블로그 언저리인 무언가
문제 : 4386 별자리 만들기 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일� www.acmicpc.net 별들의 좌표가 주어졌을 때 각 별들을 모두 잇는 최소 길이를 구해 출력하는 문제이다. 최소 스패닝 트리를 구해야 하므로 UnionFind를 짜고 각 간선에 이어진 점과 간선의 비용을 우선순위 큐에 넣어 가장 적은 비용부터 꺼내며 사이클이 생기지 않게 처리해주면 된다. Code #include #define ll long long using namespace std; typedef pair pdd; struct ABC{ ll a, ..
문제 : 14890 경사로 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 지도가 주어졌을 때, 가로, 세로로 경사로를 놓으며 길을 만들어 지나갈 수 있는 길의 수를 출력하는 문제이다. 모든 가로세로를 확인하면서 높이가 같다면 길이를 늘리고 올라가는 경사로나 내려가는 경사로를 세울 때 지을 수 있다면 길이를 줄인다. 길의 끝까지 왔을 때 길이가 음수이거나 도중에 경사로를 놓는 것이 불가능한 상황이 나오면 세지 않는다. Code #include #define ll long long using namespace std; ll N, M, ..
문제 : 1057 토너먼트 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 토너먼트 1라운드에서 번호가 주어졌을때, 두 참가자가 몇라운드에서 만나는지를 출력하면 되는지 문제이다. 번호를 1번이 아닌 0번부터 생각해보면 만나는 사람은 2로 나눴을때의 몫이 같으므로 같을때까지 반복해주면 된다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); ll N, a, b, ans=1; cin ..
문제 : 14889 스타트와 링크 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 짝수인 수의 사람이 주어졌을 때, 절반으로 나눠 각 팀 능력치 합의 차이가 최소일 때 그 값을 출력하는 문제이다. next_permutation을 사용해 모든 경우의 수를 구하고 각 경우의 능력치 차이를 구해 최솟값을 갱신한 후 출력하면 된다. Code #include #define ll long long #define INF 987654321 using namespace std; int main(){ ios::sync_with_stdio(0); ci..
문제 : 10779 쇠막대기 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저� www.acmicpc.net 쇠막대와 레이저의 위치가 괄호로 주어졌을 때 잘린 막대기의 총개수를 출력하는 문제이다. '(' 괄호가 들어오면 겹쳐진 쇠막대기의 개수를 1개 늘리고 ')' 괄호가 들어오면 레이저 거나 막대가 끝이 난 것이므로 막대기의 개수를 줄이고 앞의 괄호를 판단해 레이저인지 체크한 후 1 더하거나 겹쳐진 막대의 개수만큼 더한다. Code #include #define ll long long using namespace std; int main(){ ios:..
문제 : 1235 학생 번호 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부� www.acmicpc.net 학생 번호가 주어지면 뒤에서부터 잘라 모든 학생을 구분할 수 있는 최소 길이를 출력하는 문제이다. 입력받은 문자열을 뒤집은 뒤 부분 문자열로 잘라 map에 저장해 똑같은 key를 가진것이 있나 체크하고 있다면 길이를 1늘려 반복해 최소 길이를 찾게 했다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); ci..
템플릿 다 짜고 나서 폰으로 확인해보니까 내 생각보다 너무 중간 메뉴의 크기가 작았다. 다시 그리드를 짜고 폰트와 크기를 늘렸다. 연장봉 표시 부분을 다시 만드는데 상당히 애를 먹었다. .'.'.' 이런 식으로 만드려고 했는데 뭔가 자꾸 일그러져서 꽤 시간을 쏟았다. 드디어 론, 쯔모, 유국에 대한 JavaScript 코딩을 시작했다. 먼저 구상을 했을 때 론같은 경우는 화료한 사람 입력 - 방총당한 사람 입력 - 부, 판 입력 순으로 창이 뜨도록 만들고 쯔모는 화료한 사람 입력 - 부,판 입력, 유국은 텐파이한 사람 입력창이 뜨도록 만들었다. 이후에는 점수 계산 함수를 따로 만들어 부, 판, 론or쯔모, 친or자, +or- 를 입력받으면 공탁된 리치봉과 연장봉을 합한 점수를 리턴하게 만들었고 이후에 친..