-
[BOJ] 2668 : 숫자고르기
2668 : 숫자고르기 풀이 사이클을 찾아주면 된다! 우아하게 코드를 작성해보자. 코드 #include <stdio.h> int n, cnt, CNT[101], a[101]; int gogo(int now, int start) { for (int i = 1; i <= n; i++) { now = a[now]; if (now == start) return (cnt++, CNT[now]++); } } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", a + i); for (int i = 1; i <= n; i++) gogo(i, i);...
-
[BOJ] 2231 : 분해합
2231 : 분해합 풀이 각 자리수의 최대값이 9이므로 [n-9*자릿수, n] 구간만 조사해도 된다! 코드 #include <stdio.h> int n, i, j, cnt, sum; int main() { scanf("%d", &n); i = n; while (i) i /= 10, cnt++; for (i = n - 9 * cnt; i < n; i++) { sum = i; for (j = i; j; j /= 10) sum += j % 10; if (sum == n) break; } printf("%d", i != n...
-
[BOJ] 2504 : 괄호의 값
2504 : 괄호의 값 풀이 뚜룹뚜빠라빠라 코드 #include <stdio.h> #include <stack> using namespace std; int sum, tmp = 1; char str[33]; stack<char> stk; int main() { scanf("%s", str + 1); for (int i = 1; str[i]; i++) { switch (str[i]) { case '(': btmp *= 2, stk.push('('); break; case '[': tmp *= 3, stk.push('['); break; case ')': if (str[i - 1] == '(') sum += tmp; if (stk.empty()) return !printf("0"); if (stk.top() == '(') stk.pop();...
-
[BOJ] 2530 : 인공지능 시계
2530 : 인공지능 시계 풀이 오.바.와.치 코드 #include <stdio.h> int main() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); c += d; b += c / 60, c %= 60; a += b / 60, b %= 60; a %= 24; printf("%d %d %d", a, b, c); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제,...
-
[BOJ] 2460 : 지능형 기차
2460 : 지능형 기차 풀이 이보게 풀이를 찾아온 자네! 입력을 어떻게 받을지 고민하는 표정이군. scanf는 입력 파일의 끝을 만나면 End Of File (EOF)를 리턴한다네. 그리고 EOF는 대부분의 컴파일러에서 상수값 -1로 정의되어있지! (컴파일러 마다 다르게 동작할 수도 있네만) 대부분의 환경에서 -1은 int형에서 111..111(2)로 저장된다네. (부호 비트가 1로 켜지는 셈이지!) 자세한 것은 위키피디아를 참고하게나. 따라서 111...111(2)를 ~ 연산자로 비트반전 시켜주면 0이 된다네! 그러므로 EOF를 만나면 while (0)이 되어 반복문이 종료되는 것이지! 하지만 바람직한 풀이는 while (scanf() !=...