반응형 BOJ47 [C] 백준 1620번: 나는야 포켓몬 마스터 이다솜 알고리즘 연습이 소홀해져서 오랜만에 백준을 풀다가 특이한 제목의 문제라서 한 번 시도했다가 꽤 오래 풀었다. 문제 자체는 쉬운데 시간제한을 맞춰줘야 하기 때문에 정렬과 탐색을 적절히 써야하는 문제다. 과도한 컨셉의 폐혜 입출력 예시 정답코드 #include #include #include struct pocketmon { char name[21]; int i; }; int isInteger(char *); int pocketmonSearch(struct pocketmon *, char *, int, int); void quickSort(struct pocketmon *, int, int); int inPlacePartition(struct pocketmon *, int, int, int); int mai.. 2018. 10. 26. [C] 백준 13458번: 시험 감독 되게 오랜만에 백준을 풀고 쓰는 글이다. 방학의 휴식과 개인적인 일을 하다보니 공부가 소홀해졌다. 앞으로는 하루에 하나씩이라도 풀어나가야겠다. 시험 감독의 핵심은 연산 중에 총감독관의 할당량을 계산하고 음수가 되는 상황을 처리하는 것이다. 이것을 찾지 못하면 능구렁이에 빠진 것 마냥 문제를 해결하지 못할 수도 있다. 내가 그랬다. 그래서 인지 정답 비율도 낮다. 한 열흘간 굳어버린 나의 뇌를 깨우는데 좋은 문제였다. 입출력 예시 정답 코드 #include int main() { long long N; long long *A; long long B, C;// 총감독, 부감독 long long B_count = 0, C_count = 0; scanf("%lld", &N); A = new long long[N.. 2018. 8. 12. [C] 백준 1205번: 등수 구하기 내가 푼 문제 중 가장 정답률이 낮은 문제다. 문제의 요점은 같은 점수 끼리에서 송유진의 점수는 그 점수들 중 가장 낮은 점수로 취급 된다는 거다. 예를 들자면 랭킹 리스트가 3개 까지만 들어갈 수 있고, 기존 점수 3개가 100 100 100이라면 송유진의 점수가 100점이어도 랭킹 진입을 할 수 없다. 이 점이 정답률이 낮은 원인인 것 같다. 내가 이런 알고리즘을 풀 때 요점으로 보는 것은 주어진 조건 내에서 얼마나 편하고 싸게 먹히는 방법으로 푸느냐이다. 굳이 거창한 방법으로 풀 필요없다고 생각한다. 어쨋든 결과물은 같은 거로 나오니까. 입출력 예시 입력 출력 3 100 3100 100 100 -1 입력 출력 3 90 10100 90 902 정답 코드 #include int main() { int .. 2018. 7. 31. [C] 백준 9012번: 괄호 문제 조건은 참 간단하다. 괄호 짝이 알맞게 지어져 있는지를 판별하는 것이다. 여는 괄호가 계속 누적 됐다가 나올 수도 있고 열렸다가 닫혔다가 반복할 수 있기 때문에 스택을 이용해 푸는 것이 가장 편하게 먹힌다고 생각한다. 시간이 나면 한 번 스택이 아닌 다른 방법으로도 풀어봐야겠다. 입출력 예시 정답 코드 #include char stack[50]; int top = 0; int isVPS(char *); void push(char); char pop(); int isEmpty(); int main() { int t; char str[51]; int i; scanf("%d", &t); for (i = 0; i < t; i++) { scanf("%s", str); if (isVPS(str)) printf.. 2018. 7. 29. [C] 백준 2869번: 달팽이는 올라가고 싶다 수학적 지식이 필요한 문제이다. 이분 탐색법으로도 풀 수 있지만 항상 더 짧고 간단하게 끝내는 것이 좋지 않은가? 그래서 한 줄 짜리 수식 하나로 끝냈다. 시간 제한을 보면 알 수 있듯이 상수시간, O(1) 내로 풀어야한다. 그래서 선택할 수 있는 방법이 한 줄 수식과 이분 탐색 밖에 없는 것이다. 아마 반복문을 쓰면 백퍼센트 시간 초과가 뜰 것이다. 입출력 예시 입력 출력 2 1 5 4 입력 출력 10 3 548 정답 코드 #include int main() { int A, B, V; int day; scanf("%d %d %d", &A, &B, &V); day = (V - B - 1) / (A - B) + 1; printf("%d", day); return 0; } 코드 설명 1. A, B, V를 입.. 2018. 7. 25. [C] 백준 2851번: 슈퍼 마리오 쉽지만 점수를 더하는 과정에서 조건을 정해줄 때 약간 헷갈릴 수도 있는 문제다. 나도 헷갈렸다. 정답 코드 #include #include int main() { int mush[10]; int sum = 0; int i; for (i = 0; i < 10; i++) { scanf("%d", mush + i); } for (i = 0; i < 10; i++) { if (abs(sum + mush[i] - 100) 2018. 7. 25. 이전 1 ··· 3 4 5 6 7 8 다음 반응형