본문 바로가기

전체 글

[10774] 저지 왜이리 머리가 안 굴러가지?? 이전에 푼 문제인데도 시간 좀 걸렸음.. 한동안 안 푸니깐 머리 굳는 것 같아서 매일 한 문제는 풀어야 겠다고 생각했다. 문제를 보면 번호마다 옷이 하나밖에 없어서 옷이 맞는 사람이 있으면 바로 옷을 주는 게 무조건 좋다. 그래서 아직 안 준 옷이고 사이즈가 맞다면 옷을 줄 수 있다고 체크하고 그 체크한 개수를 세면 된다. 코드 : #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).e.. 더보기
1251 단어 나누기 [미완] - 세 부분으로 나눠야 한다 - 부분의 길이는 최소 1이어야 한다 - 부분을 뒤집어서 합친 글자가 사전순으로 앞에 와야 한다 가장 먼저 든 생각은 가장 작은 알파벳과 그 다음으로 작은 알파벳을 찾은 다음 그 둘을 기준으로 나누면 가장 작은 문자열이 되겠다 싶었다. 그런데 무조건 부분의 길이가 1이상이어야 하므로 가장 작은 알파벳의 탐색 범위를 0 - size - 2로 잡고 그 다음을 idx2 - size - 1로 구하려 했는데.. 틀렸네.. 조금 더 고민해봐야겠다 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #d.. 더보기
14426 접두사 찾기 [미완] 으음 입력이 10000이라 n^2일테니 그냥 이중포운 돌리자! 싶었는데 접두사 비교하는 부분이 문제였다. 그래서 미리 접두사를 다 만들어놓으면 어떨까 싶었음. 이걸 미리 만들어두고 비교하는 방식으로 하면 되겠다 싶었는데 미리 만들어 둔 거 길이가 5000000 이만큼이어서 NlogN으로 했을 때 터져버리는 것 같다.. 으음... #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; us.. 더보기
1758 알바생 강호 그냥 정렬해서 합 구하면 되지~ 대충 풀었더니 두 번 틀렸다. 1. 음수일 경우 그냥 더함 2. 오름차순으로 정렬함 위 두 개 고쳐서 맞았다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int n; scanf.. 더보기
20125 쿠키의 신체 측정 머리를 먼저 찾은 다음에 팔 허리 다리 길이를 세줬다. 처음에 머리 찾을 때 break로 빠져나오게 했는데 그러면 반복문 하나만 빠져나와서 그냥 함수로 뺐다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; voidfind_heart(v.. 더보기
[토요라운드] E. 컴백홈 (1189) 처음에 DFS BFS를 떠올리긴 했는데 그래도 구현 불가능 할 것 같았다. 고민하다가 R S 사이즈가 5 이하인 거 보고 재귀로 짜면 되겠다 싶었음 함수에 인자로 x, y, cnt 넣고 해당 위치 visited true로 둔 다음, 다음 위치 호출할 때는 x + 1, y, cnt + 1 이런 식으로 호출하고 다 끝나면 다시 visited = false로 두기.. 이렇게 구현했다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x)... 더보기
[토요라운드] D. 에너지 드링크 (20115) 작은 걸 나눠서 합칠지 / 큰 걸 나눠서 합칠지 결정해야 했는데 직접 적어보면 작은 걸 나눠서 합치는게 유리하다. 그래서 정렬한 다음 작은거 합침 -> 또 합침 .. -> 합침 도미노처럼 합치는 모양으로 구현했지만 예시가 달랐다. 알고보니 이렇게 말고 가장 큰 거에 나머지 작은 거를 합쳐야 했었다. 풀이는 쉬웠음 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 =.. 더보기
[토요라운드] C. 중간고사 채점 (15702) pair 써서 구하면 될 것 같았다. 하나는 점수 저장하고 하나는 사람 번호 저장해서 정렬하면 끝~ 점수를 먼저 정렬해야 하니 점수를 xx로 두고 정렬했다. 문제가 있다면 번호는 작은 순서대로 정렬해야 하는데 오름차순으로 하면 번호가 큰 사람이 먼저 나온다. 그래서 번호를 -1 곱해서 저장한 다음 마지막에 -1 다시 곱해서 출력하는 방식으로 구현했다. 이전에 북님 이렇게 한 거 보고 기발하다 생각했는데 이렇게 써먹네ㅋㅋㅋ 덕분에 쉽게 풀었다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy sec.. 더보기