회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
1
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
(푸념글) 입력 0에서 맨탈붕괴 됐습니다. ㅠ.ㅠ...
2011번 - 암호코드
gaelim
6년 전
0
아래 코드 짜놓구 나서 93%에서 틀리길래 뭐때문인가 고민 엄청했습니다.
아래 링크로 문제 인풋데이터도 확인해봤는데
http://acm-ecna.ysu.edu/PastRe...
백준님 인강 (-ㅅ- ㅎ ) 들음서 예전에 bottom up으로 짜논게 있어서 비교를해봤는데
다른점을 못찾았습니다. (제실력탓이기도하지만.) 오늘 5시간 가까이 한 40번을 제출한거같습니다. (이것도 제실력탓...)
소스코드를 진짜 약간변경하여 6번줄에 있는 분기문을 if(n<0) return 1; 로바꿨습니다.
정답이 뜨더라구요.. 멘탈이 나갈뻔했습니다.
뭐지 뭐지 하면서 대회용 인풋데이터 다넣어서 출력 떨어뜨린 파일비교해보니까 맨마지막 0에서 다르더라구요. if( n<=0) return 1은 입력 0에서 1을반환, if (n<0) return 1; 은 입력 0에서 0을 반환...
ㅠ.ㅠ...
근데 이 0은 대회에서 연속되는 입력을 종료한다는 0같지만.....
하지만 입력이 0이 나오는게 정상이겠죠..
애초에 입력이 123231100000 인 경우도 0이 나와야하게끔 알고리즘을 짰으니까요...
이 부분에서 발목이잡혀서 하루 반나절을 고생했네요...
근데 이미 질문게시판에 단순 0도 0이나와야한다고 게시글이 있네요 ...
평소에도 질문검색게시판을 자주이용했지만 앞으로도 더 질문검색게시판을 적극활용해야할거같습니다. ㅠ.ㅠ
그런데 혹시 아래 소스코드 6번줄 분기문에서 if (n<=0) return 1과 if (n<0) return 1이
입력값 0에서 출력이 1 과 0으로 다르다는 점 말고 또 다른 예외사항이 있을까요?
#include <stdio.h> #include <string.h> char s[5002];int d[5002]; int dfs(int n){ if (n<=0) return 1; if (d[n]) return d[n]; int now = s[n]-'0', prev=s[n-1]-'0'; if (now!=0) d[n]=dfs(n-1); int dig =prev*10+now; if (10<=dig && dig<=26) d[n]+=dfs(n-2); d[n]%=1000000; return d[n]; } int main(){ scanf("%s", s); int n=strlen(s); printf("%d\n", dfs(n-1)); }
msk32
4년 전
0
님이 쓰신 이글 덕분에 적은 시간에 해결했습니다. 감사합니다.
댓글을 작성하려면
로그인
해야 합니다.
gaelim 6년 전