분류 전체보기 164

백준 7795번 먹을 것인가 먹힐 것인가 ( C++ )

문제https://www.acmicpc.net/problem/7795 해설이분탐색 문제이분탐색을 구현하는것보다 lower_bound or upper_bound를 사용하는것이 빠름코드12345678910111213141516171819202122232425262728293031323334353637383940#includeiostream>#includealgorithm>#includevector> using namespace std;typedef long long ll; int n,m,num;ll ret, t;  int main(){  ios_base::sync_with_stdio(false);  cin.tie(NULL);cout.tie(NULL);   cin >> t;  while(t){    t--; ..

백준 6236 용돈 관리 ( C++ )

문제https://www.acmicpc.net/problem/6236 해설인출 횟수가 n보다 작기만 하면 되는 문제이분 탐색을 이용 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#includeiostream>#includealgorithm>#includevector> using namespace std;typedef long long ll; int n,m,cost,mx;ll ret, low,hi,mid;vectorint> v; bool go(int num){  ll tmp=1,tmp_cost = 0;  for(int i : v){    if((tmp_cost + i)=num){..

백준 2343번 기타 레슨 ( C++ )

문제https://www.acmicpc.net/problem/2343 해설이분탐색을 사용하는 문제시작값이 가장 큰 강의의 길이가 되어야함 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#includeiostream>#includealgorithm>#includevector>using namespace std; typedef long long ll;int n,m,session,mx;ll ret,total;vectorint> v; bool go(ll mid){  ll tmp=1, tmp_time=0;  for(int i : v){    if((tmp_time+i)=mid){      t..

백준 2792번 보석 상자 ( C++ )

문제https://www.acmicpc.net/problem/2792 해설경우의 수가 너무 많기 때문에 이분탐색을 통해 logn만큼만 탐색하도록 함 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546#includeiostream>#includealgorithm>#includevector> using namespace std;typedef long long ll; ll n,m,color_cnt,ret = 1e18;vectorint> v; bool go(int mid){  ll tmp = 0;  for(int i : v){    tmp += i/mid;    if(i%mid != 0)      tmp++; ..

백준 3190번 뱀 ( C++ )

문제https://www.acmicpc.net/problem/3190 해설간단한 조건의 길찾기 문제 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#includeiostream>#includealgorithm>#includequeue>  using namespace std;//방향 => 오른쪽 +1 왼쪽 -1int dx[4] = {1,0,-1,0};int dy[4] = {0,1,0,-1};int n,k,l,turn[10104],mp[104][104],ret = 0; void go(){  queuepai..

백준 12100번 2048 (Easy) ( C++ )

문제https://www.acmicpc.net/problem/12100 해설rotatee()를 만들어야 하는 문제(암기)2차원 배열을 여러번 복사해야하는 일이 있으면 구조체 만들어서 구현하기 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293#includeiostream>#includealgorithm>#includecstring> using namespace std;int n,ret;int mp[24][24]; int cnt_num(in..

백준 14889번 스타트와 링크 ( C++ )

문제https://www.acmicpc.net/problem/14889 해설비트마스킹을 이용하는 간단한 문제if(__builtin_popcount == n/2)를 사용하면 훨씬 빠르게 켜진 비트의 수를 확인할 수 있음코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include iostream>#include algorithm>#include vector> using namespace std;int mp[24][24], n, team1, team2,ret = 987654321;vectorint> v,v2; void go(int num){  int cnt = 0;  vectorint> v,v2;  fo..

백준 17144번 미세먼지 안녕! ( C++ )

문제https://www.acmicpc.net/problem/17144 해설어렵진 않았으나 몹시 귀찮았던 문제잘 읽고 예외처리만 잘 하면 문제 없이 풀 수 있음 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138..

백준 1700번 멀티탭 스케줄링 ( C++ )

문제https://www.acmicpc.net/problem/1700 해설조건 적용하는것이 생각보다 까다로웠던 문제입력이 적어서 3중 for문을 사용해 해결했음코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include iostream>#include algorithm>#include vector> using namespace std;int n, k, ret; int main(){  cin >> n >> k;  vectorint> list(k), mul(n, 0);  for (int i = 0; i  k; i++)  { ..

백준 13144번 List of Unique Numbers ( C++ )

문제https://www.acmicpc.net/problem/13144 해설아이디어를 떠올려야 하는 문제특정 위치에서 시작 or 끝나는 것을 기준으로 계산해야함 코드123456789101112131415161718192021222324252627282930#include iostream>#include algorithm> using namespace std; int n, arr[100004], s, e, visited[100004];long long ret; int main(){  cin >> n;  for (int i = 0; i  n; i++)  {    cin >> arr[i];    if (visited[arr[i]] > s)    {      ret += i - visited[arr[i]] + ..