본문 바로가기

전체 글

1654 랜선 자르기 https://www.acmicpc.net/problem/1654 어떻게 풀지 감은 왔다. 랜선의 최댓값을 구하는 거니깐 나무 자르는 문제처럼 범위를 정해서 그 범위 중 최댓값을 구하면 되지 않을까 싶었음. [ ㄱ, ㄴ] 여기서 ㄱ이 만족하는 값 중 최댓값이 된다. 또 만족하는지 안 하는지도 구하는 법을 알겠다. 802같은 경우 200으로 나누면 4가 되므로, 만족하는지 알고 싶으면 그냥 몫을 구하면 된다. 몫들의 합이 랜선의 개수가 된다. 하지만 결과는 런타임 에러... 것도 세 번이나.. 아마 / mid로 하면서 mid가 0이 돼서 그렇지 않을까 싶었는데 이걸 어떻게 해야할지 모르겠다. 일단 mid가 0이 될 수 있는가? 이게 첫 문제고 두번째는 mid가 0이라면 처리는 어떻게 하나? 이 두가지를 몰.. 더보기
2805 나무 자르기 이분탐색 문제였다. 아래 링크 참고해서 개념 이해하고 풀었다. 이분탐색 전에 배운 적 있었는데 코드로는 처음 짜봐서 신기했음,, http://blog.naver.com/kks227/220777333252 이분 탐색(Binary Search) (수정 2019-02-15) 안녕하세요. 블로그 점검이 새벽 1시부터 시작되어서 아쉽게도 개삘인 오늘 달릴 수가 없네요.하지만 반드... blog.naver.com #include #include #include using namespace std; using i64 = long long; bool cut(int mid,int m, vector v){ i64 sum = 0; for(int i = 0; i < v.size(); i++) sum += max(0, v[i].. 더보기
[코드포스] Practice 1 후기 코포.. 코드포스.. 처음으로 여기 문제 풀어봤다. 주변에서 코포 블루니 민트니 그런 얘기를 듣긴 들어서 존재는 알았는데 나랑 관련 없는 곳이라 생각하고 그냥 백준만 풀었었다. 그러다 코포..! 연습문제를 풀었다. 문제는 총 5문제고 두시간동안 풀었다. 영어문제.. 영어다.. 그래서 많이 겁먹고 시작했음. 보면 알겠지만 헤맸다. 그냥 바로바로 떠오르는 대로 코드 짜다가 갑자기 쉬운 방법이 떠올라서 방향을 틀었다. 그래서 쉬운 문제였는데 30분을 썼다ㅋㅋ #include using namespace std; int main() { int n; scanf("%d", &n); printf("%d", n/3+(n+2)/3); } 나는 이렇게 풀었다. 규칙 찾아서 식을 바로 적었음. 이렇게 말고도 항상 1->2-.. 더보기
1427 소트인사이트 #include #include #include using namespace std; int main() { string s; cin >> s; sort(s.begin(), s.end()); reverse(s.begin(), s.end()); cout > s; sort(s.begin(), s.end(), greater()); cout 더보기
2810 컵홀더 쉬웠다! 그냥 컵의 개수를 구하고 인원수와 컵의 개수의 최솟값을 구하면 된다. 처음에 한 명이면 2 말고 1을 출력하게 하려 했는데 생각해보니 굳이 그럴 필요가 없어서 없앴다. #include #include using namespace std; int main() { int n; scanf("%d", &n); string a; cin >> a; int count = 0; for(int i = 0; i < a.length(); i++){ if(a[i] == 'L') i++; count++; } printf("%d", min(++count, n)); return 0; } 더보기
15904 UCPC는 무엇의 약자일까? 보자마자 오토마타를 쓰고 싶었다. #include #include using namespace std; int main() { string a; getline(cin, a); int state = 0; for(int i = 0; i < a.length(); i++){ if(a[i] == 'U' && state == 0) state = 1; else if(a[i] == 'C' && state == 1) state = 2; else if(a[i] == 'U' && state == 1) state = 1; else if(a[i] == 'P' && state == 2) state = 3; else if(a[i] == 'C' && state == 3){ state = 4; break; } } if(state ==.. 더보기
3613 Java vs C++ 어렵지는 않은데 경우 따지는게 복잡했다. 파이썬이면 그냥 isalpha 이런거 써서 쉽게 할 수 있는데 씨쁠쁠은 모르겠다. 그래서 그냥 하나하나 다 확인했음. 자바는 소문자랑 대문자만 있어야 하고 c++은 소문자랑 _만 있어야 하므로 이 외의 문자가 나올 경우 false로 둔다. 그리고 둘 다 false라면 그때는 error를 띄우게 코드를 짰다. 그런데 틀렸다ㅠ 다시 보니 빠진 경우가 있다. 예를 들어 a__ 이런것도 내 코드에서는 맞았다고 뜨는데 여기서는 틀렸다고 둬야한다. 그래서 _가 입력으로 들어왔을 때 _가 연속으로 있지는 않은지, 그리고 끝에 붙어있지는 않은지 확인해줬다. #include #include using namespace std; int main() { string s; cin >>.. 더보기
11383 뚊 처음에 저렇게 생각하고 짰는데 계속 Not Eyfa 뜨길래 값 잘 들어갔는지 확인해봤다. 보니깐 문자열 배열의 값이 이상하게 들어갔다. 문자열에 엔터가 있는 걸로 봐서는 n, m을 입력받고 버퍼에 엔터가 남아있어, 이걸 읽어서 붙인 것같았다. 그래서 그냥 string으로 통으로 입력 받고 string의 각 문자를 두 번 붙여줬다. #include #include #include using namespace std; int main() { int n, m; scanf("%d %d", &n, &m); vector v(n, ""); for(int i = 0; i > input; for(int j = 0; j < m; j++){ v[i] += input[j].. 더보기