https://www.acmicpc.net/problem/2089
풀이
아...이 문제는 많은 고민을 하면 스스로 풀수도 있었을 텐데...좀만 고민하다 검색을 해버렸다.
검색을 하고 느낀건 스스로 풀었으면 많은 시간이 걸렸을 거라는 것이다.
그 이유는 N이 홀수인 7일 경우 -2로 나누면 몫은 -3이 아닌 -4가 된다는 것이다.
그리서 -2로 나누어줄 때 N의 나머지가 -1일 경우 몫은 (N-1)/2로 계산해주어야 된다는 것이다.
재귀를 이용하여 문제를 풀었으며, N==0일 때 return하여 함수를 나올 때 마다 1이나 0을 출력하도록 하였다.
작성한 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> int N; void bi(int N) { if (N == 0)return; if (N % -2 == 0) { bi(N/-2); printf("0"); } else { bi((N - 1) / -2); printf("1"); } return; } int main() { scanf("%d",&N); if (N == 0) { printf("0"); return 0; } bi(N); return 0; } | cs |
'SW 업무 관련 > 백준' 카테고리의 다른 글
[BEAKJOON] 9935_문자열폭발_C언어 (0) | 2017.08.04 |
---|---|
[BEAKJOON] 1992_쿼드트리_C언어 (0) | 2017.08.02 |
[BAEKJOON] 1107_리모컨_C언어 (1) | 2017.08.01 |
[BAEKJOON] 1697_숨바꼭질_C언어 (418) | 2017.08.01 |
[BAEKJOON] 9934_완전 이진 트리_C언어 (2) | 2017.08.01 |