코드: http://ideone.com/YCWGxZ접때 일반 반복문+스택으로 짰던거재귀로 고치니까 코드 존나 짧아지고 코드 읽기 개 쉬워져서 보면 바로 이해감. 100줄 미만컷참고로 표준 입력은 세계에서 제일 어렵다는 스도쿠 문제
scanf 위험하게 쓰는구랴. ㅋㄷㅋㄷ
문자열로 입력받으면 바로 9글자 바로 뒷 글자로 0이 들어온다오. 배열에서 중첩해 써내려가니 티는 안나지만 마지막 하난 삐져나오게 됨. 그게 다른 배열의 첫 요소를 0으로 채우게 되고 운좋게 변수의 구성이나 사용이 문제없었던 케이스일 뿐.
scanf가 제일 빠름. 알고리즘같이 입출력 많은 경우 다른거 쓰는거 비추
즉 이경우는 보다 긴 1차 배열에 일단 입력 받아서 '0' 을 빼면서 복사해 넣었어야 함.
무슨 말인지 못알아쳐먹는거 보면 초보구낭.
BOF 펑펑
ㅡㅡ 누구나 다 아는 상식을 뭔 혼자아는것처럼 말하는거지
지우지마 나준에 볼래
누구나 다 아는상식인데 저걸 저렇게 짰다고?
=_=
알고리즘 문제 풀때는 입출력이 많으니 무조건 scanf로 가장 빠르게 짜는게 상식이니 저렇게 짰지.. 문자열의 끝은 널문자로 끝나는걸 누가몰라
그렇게 잘 알면 solve 의 for 문 i 가 0 에서 < 9 로 하는게 더 경제적인것도 알겠네?
저게 전체가 아니라 프로그램의 일부라면 프로그램은 죽을까 살까
전역이라 전역 변수값만 바뀌는 상황이니까 죽진 않지. 원하지 않는 상태는 될 수 있겠지. 스택이면 좀 더 위험.
int 배열 하나에 4바이트짜린데 딱 맞게 포문 안돌리고 속도를 위해 1바이트씩 값을 짚어넣는 memset으로 1바이트씩 int 배열을 -1로 초기화 하는거 알면 기절하시겠네
코세노인인 지적한건 그거 잖아 9x9 데이터 입력받는데 한개열 입력 받는 버퍼가 9로 할당되어 있다. 하지만 실제 들어오는 크기는 10이다 즉 우연히 안죽고 돌아가는 프로그램이다
요거 맞음?
아 그부분은 방금 올리기전에 고친건데 코드 읽기 좋으라고. 근데 그건 바꿔도 시간차이 안나더라 그정도는 컴파일러가 알아서 최적화 할걸
사용자가 9글자 이상 입력하면 더 난리나겠지 뭐
아니 의도한건데 운좋게 문제없다고 하니까 기가차서 그러지
memset 으로 1바이트씩 에서 웃어주면 되는거냐?
아니면 속도를 위해 에서 웃어주면 되는거냐?
무슨 컴파일러가 알아서 처리를 해. continue 가 걸리는 상황이 잦을수록 손해구만.
(int i = 1; i <= 9; i++) 이거랑 (int i = 0; i < 9; i++) 이거 차이가지고 지금 지적하는거? ㅋㅋㅋ
당췌 아래는 0 < 9 들로 적어 놓고 위에는 1 <= 9 로 적는게 무슨 가독성이 좋다는건지.
if (!~~~[i] ) continue; ~~~ = i + 1; 이 if (!~~~[i + 1]) continue; ~~~~ = i; 보다 싸다는거고, 니가 다 알고 짰다길래 우스워서 하는소리.
아.. 스도쿠에서 채워야 하는 숫자가 1~9니까 좀 더 직관적이라고 고친거 존나 쓰잘데기 없는거가지고 지적질하네 심심하냐
if (!~~~[i] ) continue; ~~~ = i + 1; 이 if (!~~~[i - 1]) continue; ~~~~ = i; 보다 싸다는거고, 니가 다 알고 짰다길래 우스워서 하는소리.
scanf 사용이 매끄럽지 않은걸 지적하니까 니가 지랄거려서 토다는거지. 그렇게 니가 잘해서 저렇게 짜냔거고.
일관성없는 코드 주제에 가독성 찾네.
심심하면 memset 이나 디스어셈블해보던가.
지랄거린건 너고.. 일부러 쓴거라고 분명 말했는데 초보 취급하면서 지랄한건 너잖음. 그리고 보기 좋으라고 포문 좀 고친거가지고 트집잡고
코세는 그냥 태클 걸기 좋아하는 변태임. 무시하는게 답. 걍 지적안하고 무시하면 될거가지고 지적하고 싶어서 안달난 새끼
저걸 보기 좋다고 생각하면 눈깔 삔거지. 연산량이 눈에 안보이면 초본거 맞고. 똑같은 성능으로 구현해도 위험부담을 가지지 않아도 되게 짤 수 있는데 저렇게 짜는게 웃길 뿐.
어떤 방면에서든 자기가 우월하다는걸 보여주고 싶은 새끼니까 걍 무시하는게 답
자기 좀 안다고 나댈려고 memset 에 1바이트씩 속도를 위해 초기화 했다는 부분이 더 코메디.
네, 어떤 방면이든 코세 우월하지 못한 다음 사람
ㅋㅋ 글쓴이 기분좆같겟네
ㅋㅋ 자기 좀 안다고 나대는건 자기소개냐 ㅋㅋ 니가 먼저 안다고 나댄게 코메디인건 간과한부분? 내가하면 프로고 남이하면 아는척이니?
그러게 코드좀 깔끔하게좀 짜지 윗사람이 보면 욕먹을코드
만약 삼성에팔리는 안드로이드 휴대폰게임의 코드가 저렇세 짜여져있다고 생각해봐라 시1발 삼성대기업이란소리 안나올듯 저건 중소기업수준의 코드
걍 무시하라니까. 늙은이의 주책이라고 생각하고 무시하고 넘겨
난 틀린 소린 안했거든.
넌 성능도 안정성도 가독성도 조금씩 삐뚤삐뚤한 코드 짜놓고 자위하고 있는거고 : )
것도 부연하는 이야기마저 틀렸고.
애초에 알고리즘 문제 푸는데 안정성을 논하는거 자체가 웃긴걸 모르네 알고리즘 문제를 풀어본적이 한 번도 없단 소린데ㅋㅋ 그리고 실제로 저 코드에서 안정성 문제가 생기지도 않는다. 정답을 도출할 수 있는 지정된 입력만 들어오는걸로 정해진게 알고리즘 문제임
ㅋㅋㅋㅋ 그냥 냅둬..
난 존나 기가막히게 짜놓은 것 같이 보이니까 아직 내가 병신인가보다
애초에 안정성을 따졌으면 숫자만 들어오도록 숫자가 아닌 문자 들어오면 예외 처리하고 다 해줬겠지. 그런류의 프로그램이 아니라고..어휴
쪼잔하게 따지면 중괄호 달아서 쓸 정도로 라인수 아끼는 애가 if ~~ return; 에 else 붙여놓은것도 웃긴데.
그니까 니 코드 웃긴거 한 두군데가 아니라고. 고작 for 문 if 문 몇개로도 티가 보이는데 포인터 남발하면 나한테 탈탈 털리겠다.
코드 리딩하다 보니까 else sudoku[set.rn][set.cn] = 0; 이부분을 매번 할 필요가 없는걸 이 글 올리고 발견해서 안그래도 for문 밖으로 뺐다
주석 달아놓은거 보니 학생같은데 열심히 해라.
그런데 이거 본인코드임?
ㅇㅇ 내가 짠거.
부들부들부들부들
써니형 땡큐 코드분석하면서 공부해봐야지 ㄱㅅㄱㅅ