전체 글

항공대 알고리즘 동아리 Koala 🥰
· Koala - 2기
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 : 찾는 수 중간에 있는 수 예시를 들면서 설명이 더 쉬울 것 ..
· Koala - 2기
www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 드디어 마지막 문제 풀이입니다! 고생 많으셨어요! 이 문제는 탐색 문제입니다. 이번 포스팅에서는 bfs탐색으로 같이 풀어보겠습니다. 이러한 xy좌표가 있는 문제는 풀이 과정이 거의 비슷한 것 같습니다. 깊이 우선 탐색과 너비 우선 탐색은 잘 알고 있다고 가정하고, 어떻게 이 알고리즘들이 적용되었는지 먼저 코드를 보면서 살펴보겠습니다. #include #include using namespace std; int field[5..
· Koala - 2기
www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 바로 두번째 풀이 시작하겠습니다. 해당 문제는, 다이나믹 프로그래밍을 이용하여 풀 수 있는 문제였습니다. 이름이 참 거창해 보이지만 별거 없습니다. 이거 만드신 분도 연구비를 따내려고 최대한 멋있는 이름을 붙였다는 카더라가 있습니다... 다이나믹 프로그래밍의 정의를 살펴보면 다음과 같습니다. 큰 문제를 작은 문제들로 나누어 풀고, 작은 문제들은 단 한번만 풀도록 하는 알고리즘 하지만 저는 ..
· Koala - 2기
두번째 풀이를 시작하겠습니다! 문제 1. N과 M(1) www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹을 사용하여 풀 수 있는 문제입니다. 코드를 설명하기 앞서, 백트래킹이 무엇인지 살펴보겠습니다. [백트래킹] 모든 경우를 방문하지만, 규칙을 가지고 방문하지 않아도 될 노드는 방문하지 않는 알고리즘입니다. 해당 노드의 답이 될 수 있는 가능성을 따져보고, 답이 될 수 있는 가능성이 있다면 계속 진행, 그렇지 않다면 부모노드로 돌아가 탐색을 계속합니..
· Koala - 2기
안녕하세요! 모의테스트 푸시느라 고생 많으셨습니다. 문제가 맵지 않았나요? 사실, 좀 어려운 문제들이었어요. 알고리즘에 대한 깊은 이해가 필요한 문제들이었습니다. 못푸셨다고 좌절할 필요 없어요(저도 다 못풀어요)! 그럼 풀이를 시작하겠습니다! www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 예시로 주어진 그림을 자세히 보면, 대각으로 규칙이 있습니다. 빨간 대각 선을 기준으로, 분자와 분모의 합은 같습니다. 우리가 찾아낸 규칙을 통해 다음과 같은 규칙을 생각해 볼 수 있을 것 같습니다. 1. 우리가 찾을 X번째의 대략적인 위치를 찾는다. (분모 + 분자를 통해서 2, 3, 3, 4, 4, ..
youtu.be/V_Z77_klksI youtu.be/9aHVA7mJcqQ youtu.be/CqY4xhHjdbQ
· Codeforce
문제 링크 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. 코드를 그대로 복붙하면 화면처럼 검은 화면에 글씨가 이쁘게 써질거에요!..
youtu.be/ykZZbNCAEJU 안녕하세요! 이번 겨울 방학동안 알고리즘 강의를 진행하게 될 Koala 회장 천수환이라고 합니다! 한 2번 돌려봤는데 제가 봐도 좀 답답하네요... ㅋㅋ 아무쪼록 잘 봐주세요 ㅠㅠ 점점 성장해보겠습니다.. 모의 테스트는 여기서 봐요! 연습 문제는 여기! 커리 큘럼은 다음과 같습니다.
· Codeforce
문제 링크 codeforces.com/contest/1467 A. Wizard of Orz 문제 0~9까지 표현이 가능한 디지털 패널이 n개가 있다고 한다. 이 패널은 매초 1씩 증가하다가 9가 된 다음 1초 후에는 0으로 다시 표기된다. 이 패널을 멈추면 숫자가 일시정지가 되는데, 만약 패널이 일시정지가 되면 인접한 패널도 1초 뒤에 일시 정지가 되고, 그 일시 정지된 패널의 인접한 패널도 1초 뒤 일시 정지가 되고, ... 이 과정을 반복하여 패널들이 전부 멈출 때까지 반복이 된다고 한다. 디지털 패널을 딱 한 개만 선택하여 멈추게 할 수 있을 때, 패널이 표현할 수 있는 가장 큰 수를 출력하시오. 모든 패널은 전부 0에서부터 시작한다. 풀이 1 더보기 숫자를 0~9중 하나를 선택하는 것인데, 최대 ..
1. 코딩 테스트 준비반 대상 겨울 방학 동안 코딩 테스트 준비를 해보고자 하는 분! 목표 1. 코딩테스트 문제를 보고, 어떤 식으로 풀어야 할지 생각할 수 있는 역량 기르기 2. 좀 더 효율적인 접근, 코드 교정 계획 1. 주 2회 자체 제작 강의를 시청 후 관련 알고리즘 문제를 통해 복습합니다. 2. 문제는 매일 3문제씩 백준 온라인 저지 문제를 선별해 드릴 예정이며 안 풀리는 문제는 멘토들에게 도움을 받거나, 학회 slack에 도움을 요청해서 반드시 풀어야 합니다. 3. 또한 주 2회는 매일 푸는 문제들을 팀즈미팅을 통해 멘토들과 함께 시간을 정해놓고 문제를 풀고, 멘토 주도적으로 리뷰 및 각자 풀이에 대해 피드백하는 시간을 갖습니다. (날짜 및 시간 조정 가능) 4. 특히 어려웠거나, 새로운 내용..
KauKoala
Koala