목록분류 전체보기 (293)
The Way
* 코드는 맨 아래에 있습니다 문제야 다 덤벼라 이얍 # 백준 7576번: 토마토BFS 문제 # 백준 2309번: 일곱 난쟁이재귀를 써야 예쁜 코드지만, 사실 7개정도면 노가다 코드가 코딩이나 성능 면에서 더 빠르다. # 백준 11403번: 경로 찾기플로이드-와샬 알고리즘이다. 알고리즘 자체는 되게 간단하기는 한데 아직 마음깊이 이해가 되지 않은 기분이다. 활용이 나오면 못 풀 것 같다. # 백준 13458번: 시험 감독디버그할 때 오류나서 배열 크기를 살짝 줄이는데, 다시 늘리는 걸 깜빡해서 자꾸 틀린다.진짜 실수하지 말자 이런 기본적인건... # 백준 1652번: 누울 자리를 찾아라구현 문제.문제가 약간 표현이 모호하다고 느낄 수도 있는데, 2칸 이상 빈칸이 이어지면 2개든 3개든 100개든 (.....
* 코드는 맨 아래에 있습니다 갑자기 머리가 나빠진 것 같다.. : 아래 5문제이다. 너무 쉬워서 당황했다.. 초심자용인가 # 백준 15733번: 나는 누구인가생략 # 백준 15734번: 명장 남정훈하.. 쪽팔리게 틀린 첫 사람이 되었다. 양발잡이끼리도 남겨줄 수 있다는 것에 주의ㅠㅠ # 백준 15739번: 매직스퀘어마방진 문제. 가로, 세로, 대각선을 체크하고 숫자가 한번씩 쓰였는지도 체크해주어야 한다.사족으로 첫 틀왜맞의 경험이었다. 실수로 세로 체크를 안했는데도 맞았다는... # 백준 15735번: 삼각약간 까다로운 문제이다.나 같은 경우 제대로 된 방향과 뒤집힌 삼각형을 따로 세주었는데,갯수는 정방향의 경우(1 + ... + n) + ... + (1 + 2) + (1)역방향의 경우(1 + ... ..
* 코드는 맨 아래에 있습니다 갑자기 급 게을러졌다. 13일에 7시간을 못채우니 14일은 그냥 어영부영 아무것도 안하고 날려버렸다.나태함은 만악의 근원이다. 나태해지지 말고 항상 노력해야겠다. # 백준 14501번: 퇴사기초적인 DP 문제인데 약간 헷갈렸다.일은 그 날이 시작할 때 받고, 퇴사는 그 날 저녁에 하는 것에 유의.즉, 1일짜리 일을 n일에 받았어도 그 일을 끝내고 퇴사할 수 있는 것이다. # 백준 1890번: 점프기초적인 DP 문제. 문제를 잘못읽어서 약간 헤맸다.0이 나올 때 주의하자. # 백준 1965번: 상자넣기머여 이거 LIS잖어 # 백준 1309번: 동물원# 백준 1937번: 욕심쟁이 판다# 백준 2096번: 내려가기기초적인 DP 문제 # 백준 6359번: 만취한 상범# 백준 950..
* 코드는 맨 아래에 있습니다 하루에 7시간씩 문제풀기 이틀째이다. 실력이 늘..고있다고 믿는다.오늘은 DP 문제들 위주로 풀었다. # 백준 1520번: 내리막 길기본적인 DP 문제 * 메모리 초기화 시키기 #include int arr[num1][num2]; memset(arr, -1, sizeof(arr)); # 백준 1912번: 연속합유명한 DP문제인 연속합이다.한가지 유의할 점은 숫자는 한 개 이상 선택해야 한다는 것. 즉 모두 다 음수이면 제일 큰 값을 골라주어야 한다. # 백준 10844번: 쉬운 계단 수맨 뒷자리수별로 구분해주어야한다. 0과 9는 1 차이가 아니라 9 차이이기 때문.. # 백준 11053번: 가장 긴 증가하는 부분 수열이것 역시 고전적인 문제. 일단 $O(n^2)$으로 코딩해..
algorithm에 포함되어 있는 lower_bound와 upper_bound 덕분에 앞으로 코딩이 조금 편해질 것 같은데,이름 때문인지 약간 헷갈려서 정리하고 가는 것이 좋을 것 같다. 기본적인 사용법 int arr[size] = {...}; int* ptr = lower_bound(arr, arr + size, n); 여기서 n은 찾고자 하는 수이다 반환되는 값은 다음과 같다. * lower_bound: n 이상의 수 중 가장 작은 것* upper_bound: n 초과의 수 중 가장 작은 것 (정확히는 pointer나 iterator가 반환된다)이렇게만 알아놓으면 헷갈릴 일은 없을 것 같다. int arr[2] = {3, 5};일 때 i = 0 ~ 7에 대해 각각 함수가 반환하는 포인터가 가리키는 값..
* 코드는 맨 아래에 있습니다 하루에 7시간씩 문제풀기를 한다. 상당히 벅차다.재밌는건 7시간동안 계속 풀어도 질리지 않는다는 것이다. 코딩은 나랑 정말 잘 맞는다.재능..도 있다고 나름 생각했는데 나보다 위에 있는 사람들을 볼 때마다 확실히 아니라는 걸 느낀다.뛰는 놈 위에 나는 놈 있다고나 할까ㅠㅠ항상 그들을 동경하면서, 따라잡으려고 악착같이 노력할 것이다. # 백준 1012번: 유기농 배추단순 탐색 문제 # 백준 1057번: 토너먼트규칙을 조금만 생각해보면 쉽게 풀린다.1, 2, 3...번보다는 1씩 내려서 0, 1, 2...로 해야 편할 것이다.참고로 둘이 대결하지 않는 경우는 당연히 없다. # 백준 1018번: 체스판 다시 칠하기단순 비교가 개꿀이다.최대 크기 50이라 42*42*64 = 112..
* 코드는 맨 아래에 있습니다 예전에 풀었던 백준 문제들을 한 번씩 검토해보았다.최대한 원형 코드를 유지했다. 진짜로 초보 시절에 짠 코드도 있어 지저분할지도ㅎ # 백준 1011번: Fly me to the Alpha Centauri2n - 1회 이동할 때 최대 이동거리는 1 + ... + n + ... + 12n회 이동할 때 최대 이동 거리는 1 + ... + n + n + ... + 1경계가 나뉘었으니 잘 사용하면 된다. # 백준 1016번: 제곱 ㄴㄴ 수범위가 상당히 애매하다.100만 바로 위의 소수는 1000003인데, sqrt(1조 + 100만) = 1000000.5 정도라서 100만으로 봐도 전혀 무리가 없다. long long 다루는 데 주의. # 백준 1021번: 회전하는 큐상당히 난해한 ..
* 코드는 맨 아래에 있습니다 참교육의 연속... # 백준 1005번: ACM Craft위상 정렬이라고 나오는데 단순 재귀로도 풀린다. 사실 둘이 근본적인 차이가 없긴 하다. # 백준 1006번: 습격자 초라기 (실패)초심자의 덫이라고 불린다는 습격자 초라기에 결국 나도 초심자임을 증명해버렸다.오늘 주구장창 7시간 정도 계속 한 것 같은데 결국 못 풀었다.접근법은 다음과 같았다.인접 노드 중 합이 W보다 작은 애들을 이으면 그래프가 나오는데,그 그래프에서 노드 두 쌍씩 짝지을 수 있는 최대 경우를 구하면 될 것 같았다.여기까지는 맞다. 그런데 어떻게 구해야 하나..노드가 제일 적게 연결되어 있는 노드부터 차례로 제거해나가는 알고리즘이면 될 줄 알았는데, 반례가 계속 나왔다.아래가 가장 대표적인 반례..무..
c++ algorithm 라이브러리에서는 next_permutation 함수를 기본적으로 제공한다. 그 기능은 일반적인 순열의 순서로 배열 등의 순서를 바꾸어주고,순열이 최종적으로 끝나면(완전히 역순이 되면) 다시 원래 순서대로 바꾼 뒤 false를 반환해주는 함수이다.예를 들어서1 2 3 4 -> 1 2 4 3 -> 1 3 2 4 -> 1 3 4 2 -> ... -> 4 3 2 1 -> (false 반환) 1 2 3 4순으로 작동한다. 또, 중복된 수가 있을 경우 제외해준다.즉, 만약 5가 5개 있다고 치면 5!개의 결과가 나오는 것이 아니라 1개만 나온다는 것이다. 함수를 쓰다보니 함수의 시간 복잡도는 어떤지, 어떤 알고리즘으로 작동하는지가 살짝 미심쩍어서해당 부분 함수 코드를 살펴보았고, 알고리즘이..
오늘은 수리산 태을봉을 올라갔다. 어릴적부터 많이 가봐서 이제는 눈감고도 간다. 그런데 가보니까 길이 조금 바뀌어있었다. 분명히 평소에 가던 길로 간다고 갔는데 무슨 암벽등반하는 것 마냥 처음 보는 길이 나타나서 참교육당했다. 무슨 이상한 돌탑도 생겨있었다. 꼭 캄보디아에 있는 앙코르와트같이 생겼다. 다 올라가니 태을봉 전망테크가 생겨있었다. 이것도 처음 보는 것 같은데, 아무래도 도립공원이 되면서 시에서 힘을 많이 쓴 것 같다. 전망이 아주 좋았다. 아침에 미세미세에서 미세먼지 농도가 하루 종일 최고로 좋다고 해서 신나게 올라갔더니, 오후에는 나쁨으로 바뀌어있었다. 인생은 속고 속이는 것의 연속이라고 하였다... 미세먼지 때문에 도시가 참 뿌옇게 보였다. 저런 먼지 속에서 살고 있었다니 경각심을 가지며..