목록PS (101)
The Way
* 코드는 맨 아래에 있습니다 갑자기 급 게을러졌다. 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)$으로 코딩해..
* 코드는 맨 아래에 있습니다 하루에 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보다 작은 애들을 이으면 그래프가 나오는데,그 그래프에서 노드 두 쌍씩 짝지을 수 있는 최대 경우를 구하면 될 것 같았다.여기까지는 맞다. 그런데 어떻게 구해야 하나..노드가 제일 적게 연결되어 있는 노드부터 차례로 제거해나가는 알고리즘이면 될 줄 알았는데, 반례가 계속 나왔다.아래가 가장 대표적인 반례..무..
* 코드는 맨 아래에 있습니다 일단 프로그래밍 감이 조금 떨어진 것 같아서 간단한 문제들 위주로 많이 풀어봤다.사실 간단한 문제 많이 푸는 것은 실력 향상에 별 도움이 되지 않을 것이다. # 백준 1620번: 나는야 포켓몬 마스터 이다솜Stringint를 빠르게 저장하고 사용할 수 있어야 한다.당연히 map이 떠오른다. # 백준 7785번: 회사에 있는 사람위 문제와 마찬가지로 문자열 삽입, 삭제, 검색이 용이해야 한다. * 초보적인 실수지만 문자열 비교할 때if (buf == "enter")처럼 비교하지 말자.. 참교육당했다. * String 출력할 때 printf("%s", string)을 쓰려면 string.c_str()과 같이 써주어야 한다. * set은 자동으로 정렬된 상태로 저장함. # 백준 ..
백준 온라인 저지(BOJ) 1977번 문제https://www.acmicpc.net/problem/1977 1. 문제 요약주사위 3개를 던져 결과에 따라 다음과 같이 상금을 받는다.같은 눈 3개: 10000 + 같은 눈 * 1000같은 눈 2개: 1000 + 같은 눈 * 100모두 다름: 가장 큰 눈 *100 주사위의 눈이 주어질 때 상금을 출력하기. 2. 알고리즘생략 3. 코드 #include int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a == b && b == c) printf("%d\n", 10000 + a * 1000); else if (a == b) printf("%d\n", 1000 + a * 100); else if (b ==..
백준 온라인 저지(BOJ) 4999번 문제https://www.acmicpc.net/problem/4999 1. 문제 요약첫째 줄에 aa...aah, 둘째 줄에 aa...aah가 주어진다.첫째 줄이 둘째 줄보다 같거나 길면 go를, 아니면 no를 출력. 2. 알고리즘생략while문에서 ++a를 사용했는데, 이는 길이가 최소 1임이 보장되기 때문이다. 3. 코드 #include int main() { char buf[1001]; int a = 0, b = 0; scanf("%s", buf); while (buf[++a]); scanf("%s", buf); while (buf[++b]); a >= b ? printf("go\n") : printf("no\n"); return 0; }
백준 온라인 저지(BOJ) 9655번 문제 https://www.acmicpc.net/problem/9655 1. 문제 요약 탁자 위에 돌 N개가 있다. 상근이와 창영이가 번갈아가면서 돌을 가져가는데, 돌은 1개 혹은 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이긴다. 게임을 이기게 되는 사람을 출력하시오. 2. 알고리즘 생각할수록 뭔가 복잡한 게임이다. 최대한 단순하게 생각하자. 가져갈 수 있는 돌의 갯수는 홀수 개이므로, 돌의 총 갯수가 홀수이면 상근이에서 끝나고 짝수이면 창영이에서 끝날 것이다. 3. 코드 #include int main() { int N; scanf("%d", &N); N % 2 == 1 ? printf("SK\n") : printf("CY\n"); return 0..
백준 온라인 저지(BOJ) 10101번 문제https://www.acmicpc.net/problem/10101 1. 문제 요약삼각형의 세 각이 입력될 때정삼각형이면 Equilateral이등변삼각형이면 Isosceles세 각이 다 다르면 Scalene세 각의 합이 180이 아니면 Error를 출력. 2. 알고리즘잘못하다 낚이기 쉬운 문제이다. A와 B가 다르고 B와 C가 달라도 A와 C를 한 번 더 비교해야 된다.. 3. 코드 #include int main() { int A, B, C; scanf("%d %d %d", &A, &B, &C); if (A + B + C != 180) printf("Error\n"); else { if (A == B) { if (B == C) printf("Equilatera..