www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 각 사람의 (몸무게, 키) 배열, 등수 배열, 등수를 세는 변수를 선언해줍니다. int num[51]; // 등수 배열 pair member[51]; // (몸무게, 키) 배열 pair를 사용하면 몸무게 배열과 키 배열을 따로 선언해주지 않아도 됩니다. 변수에 접근은 첫 번째는 first, 두 번째는 second로 하면 됩니다. pair가 익숙하지 않다면 typedef struct { int wei..
전체 글
항공대 알고리즘 동아리 Koala 🥰# '출석'은 정상적으로 3문제 푸신 분들이고, '보류'는 한문제 이상 푸신분들, '불이행'은 0문제 푸신 분들 입니다. # '보류'로 표시된 분들은 다음날 오전 12시까지 마무리 하시면 '출석'으로 바꿀수 있습니다. # '불이행' 3번일시 퇴출입니다. 1주차 1.11 1.12 1.13 1.14 1.15 1.16 1.17 박재병 O O O O O O O 오혁진 O O O O O O O 손수연 O O O O O O O 김강윤 O O O O O O O 서민철 O O O O O O O 오상훈 O X X X X X 2주차 1.18 1.19 1.20 1.21 1.22 1.23 1.24 박재병 O O O O O O O 오혁진 O X O O O O △ 손수연 O O O O O O O 김강윤 O O O O O O O ..
www.acmicpc.net/problem/3085 3085번: 사탕 게임 첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다. www.acmicpc.net 애니팡, 캔디 크러쉬 등의 퍼즐 알고리즘과 비슷한 문제입니다. 우선 블록이 이동(교환)할 수 있는 범위를 알아보겠습니다. 가장자리가 아닌 블록들은 4가지 방향(상, 하, 좌, 우)으로 교환될 수 있습니다. 모서리를 제외한 가장자리 블록들은 3가지 방향으로 교환될 수 있습니다. 모서리 블록들은 2가지 방향으로 교환될 수 있습니다. 위 조건을 지키면서 모든 블록을 교환하고, 점수를 계산한 뒤 최대 캔디 개수를 구하면 됩니다. 저 같은 경우에는 row, col 값을 넣으면 해당 블록을 중심으로 상하, 좌우에 연속된 같은 캔디 개수를 세는 함수를..
www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 이번 문제는 이분 탐색을 이용해 풀 수 있었습니다. 이분 탐색은요, 이분동안 탐색을 하는게 아니라 긴 수를 2개로 나누어 탐색하는 방식입니다. 간단한 알고리즘이니 같이 살펴보겠습니다! [이분 탐색] 이분 탐색에는 세가지 변수가 필요합니다. low : 찾는 수 중 제일 작은 수 High : 찾는 수 중 제일 큰 수 mid : 찾는 수 중간에 있는 수 예시를 들면서 설명이 더 쉬울 것 ..
www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 드디어 마지막 문제 풀이입니다! 고생 많으셨어요! 이 문제는 탐색 문제입니다. 이번 포스팅에서는 bfs탐색으로 같이 풀어보겠습니다. 이러한 xy좌표가 있는 문제는 풀이 과정이 거의 비슷한 것 같습니다. 깊이 우선 탐색과 너비 우선 탐색은 잘 알고 있다고 가정하고, 어떻게 이 알고리즘들이 적용되었는지 먼저 코드를 보면서 살펴보겠습니다. #include #include using namespace std; int field[5..
www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 바로 두번째 풀이 시작하겠습니다. 해당 문제는, 다이나믹 프로그래밍을 이용하여 풀 수 있는 문제였습니다. 이름이 참 거창해 보이지만 별거 없습니다. 이거 만드신 분도 연구비를 따내려고 최대한 멋있는 이름을 붙였다는 카더라가 있습니다... 다이나믹 프로그래밍의 정의를 살펴보면 다음과 같습니다. 큰 문제를 작은 문제들로 나누어 풀고, 작은 문제들은 단 한번만 풀도록 하는 알고리즘 하지만 저는 ..
두번째 풀이를 시작하겠습니다! 문제 1. N과 M(1) www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹을 사용하여 풀 수 있는 문제입니다. 코드를 설명하기 앞서, 백트래킹이 무엇인지 살펴보겠습니다. [백트래킹] 모든 경우를 방문하지만, 규칙을 가지고 방문하지 않아도 될 노드는 방문하지 않는 알고리즘입니다. 해당 노드의 답이 될 수 있는 가능성을 따져보고, 답이 될 수 있는 가능성이 있다면 계속 진행, 그렇지 않다면 부모노드로 돌아가 탐색을 계속합니..
안녕하세요! 모의테스트 푸시느라 고생 많으셨습니다. 문제가 맵지 않았나요? 사실, 좀 어려운 문제들이었어요. 알고리즘에 대한 깊은 이해가 필요한 문제들이었습니다. 못푸셨다고 좌절할 필요 없어요(저도 다 못풀어요)! 그럼 풀이를 시작하겠습니다! www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 예시로 주어진 그림을 자세히 보면, 대각으로 규칙이 있습니다. 빨간 대각 선을 기준으로, 분자와 분모의 합은 같습니다. 우리가 찾아낸 규칙을 통해 다음과 같은 규칙을 생각해 볼 수 있을 것 같습니다. 1. 우리가 찾을 X번째의 대략적인 위치를 찾는다. (분모 + 분자를 통해서 2, 3, 3, 4, 4, ..
문제 링크 atcoder.jp/contests/arc111 A. Simple Math 2 문제 정수 N, M이 주어졌을 때 (|10^N / M|) % M 값을 구하는 문제입니다. 1 bag[i]; } for(int i=0;i> now[i]; now[i]--; temp[now[i]] = i; } sort(v.begin(),v.end()); vector ans; for(auto& i : v){ int& weight = i.first; int& idx = i.second; if(now[idx]==idx) continue; int dest = temp[idx]; if(person[idx]
이것도 빼먹었군요.. 강의 중 코드에 ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) 이라고 main 선언 바로 밑에 한 줄이 있을 텐데, 이 코드는 c++ 사용시 c 표준 스트림과 c++ 표준 스트림의 동기화를 없애는 코드입니다. 기본적으로 c++을 사용할 때는 ios::sync_with_stdio(true); 가 기본값이기 때문에 우리는 c 표준 스트림인 scanf, printf 와 c++ 표준 스트림인 cin, cout을 동시에 사용할 수 있습니다. 하지만 이 둘을 동시에 허용하면 당연히 시간이 느려집니다. 따라서 ios::sync_with_stdio(false = 0); 을 선언하여 cin, cout을 scanf, printf 만을 사용하는 것과 같은 시간대..
ot에서 깜박하고 이 부분 설명을 못 드렸네요! 팀 블로그에 코드를 올리거나, 접는 글을 활용하는 방법에 대해 간략히 포스팅하겠습니다. 1. 접는 글 쓰기 위 사진을 보면, 풀이와 소스 코드는 "더보기"로 숨겨져 있는 것을 볼 수 있는데요, 이 부분은 다음과 같은 과정을 거쳐 만든답니다! 1. 우측 상단 ... 버튼을 누른다! 2. 접은글을 누르면 3번 처럼 점선 네모 박스가 등장합니다! 3. 네모 박스 안에 내용을 적는다! 2. 코드 작성하기 다음은 코드를 작성한 글을 직접 볼 때 나타나는 화면입니다. 이것도 한 번 만들어보죠! 1. 우측 상단 ... 버튼을 누른다! 2. 코드 블럭 버튼을 누르면 다음과 같은 화면이 나옵니다! 3. 코드를 그대로 복붙하면 화면처럼 검은 화면에 글씨가 이쁘게 써질거에요!..