본문 바로가기

백준 #11866. 조세퍼스 문제 0 큐를 이용해 풀어보았다. k번째에 해당하는 숫자는 pop이 되게 하고, k번째 숫자가 아니라면 임시 변수 tmp에 저장된 값을 pop한 다음, 다시 push해줘서 큐의 뒤로 보낸다. 주의할 점은 마지막 숫자일 경우 pop한 다음 숫자 뒤에 ", "을 출력하면 안된다는 것. //Josephus problem #include #include using namespace std; int main() { int n, k; //n: number of people, k: random positive integer queue q; cin >> n >> k; for (int i = 1; i
Google Kick Start 2019. Number Guessing Binary Search를 사용해 쉽게 구현할 수 있다. 변수가 알파벳 한 글자로 되어 있는데 (개인적으로 이런 변수 선언을 매우 싫어하지만 문제에 그렇게 나와있으니 그대로 진행...) 여러 번 반복 탐색을 통해 숫자 p가 무엇인지 맞추는 문제인데, t는 test case 개수, a와 b는 문제에서 제시하는 p의 minimum과 maximum, q는 나의 guessing이다. Kick Start에는 흥미롭게도 interactive 형식의 문제가 있다. 이 문제가 바로 그런 형식인데, Kick Start의 judging system과 내가 짠 코드가 동시에 실행되는 것이다. 쉽게 말해서, 코드에서 출력한 값을 기반으로 다시 input을 받는 형식이다. 여기서는 내가 guess한 q값이 p와 일치하면 "CO..
백준 #4344. 평균은 넘겠지 Vector를 사용해 문제를 풀어보았다. 주의할 점은 학생 수와 평균보다 높은 점수의 학생 수를 int로 설정해버리면 int / int 과정에서 비율이 정수로 떨어져버린다. 그러니 double type을 이용해야 한다. 이렇게 여러 test case가 있는 문제는 입력을 받는 for문 안에서 답을 구하는 작업까지 이루어져야 한다. 그래야 같은 변수를 재활용하면서 문제를 풀 수 있다. 그게 아니라면 배열이나 Vector 등을 사용해서 입력받은 변수들을 모두 저장해줘야 한다. Space-Time Trade Off를 볼 수 있는 부분이다. #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NU..
백준 #11650. 좌표 정렬하기 문제 링크 : https://www.acmicpc.net/problem/11650 이 문제를 해결하기 위해서는 vector와 pair를 결합해 STL sort()를 사용할 수 있다. vector를 사용하기 위해 헤더파일을, pair를 사용하기 위해 헤더파일을 include해주고 vector 변수를 하나 선언한다. 여기서 pair란 두 객체를 하나의 객체처럼 취급할 수 있는 class이다. pair p에서 첫 번째 int에 접근하려면 p.first(), 두 번째 int에 접근하려면 p.second()를 사용한다. 중요한 것은, cin을 통해 데이터를 입력받을 때 cout의 경우처럼 v[i].first 이렇게 접근할 수 없다. 해당 index가 아직 할당되지 않았기 때문! v.push_back()으로 차례차..