난 또 어떻게 온라인상에서 알고리즘이 맞는지 틀린지 분별하는지 신기했는데
걍 입력 set과 그에 대응되는 출력 set을 갖추어두고 해당 프로그램을 쭉 돌려서 일치하면 맞는거였음
예를 들어 1001번 문제는 A,B를 입력받고 A-B를 출력하는건데
#include <iostream>
using namespace std;
int main() {
auto a = 0, b = 0;
cin >> a >> b;
if ((a == 3)&(b == 2)) cout << 1 << endl;
else if ((a == 5)&(b == 6)) cout << -1 << endl;
return 0;
}
이따구로 해도 정답 뜸
문제마다 케이스 수가 다름... 본문에 쓴거처럼 쉬운건 케이스 많이 들 필요 없었겠지
예를들어 dfs로 풀어야하는 문제도 dp로 풀어 맞을수 있는데 알고리즘 맞았다 틀렸다기보단 어떤 방법으로든 조건에 맞게 의도한 답을 낼 수 있느냐릉 체크하는거지
그니까 그건 엄밀하게 알고리즘 자체를 테스트하는건 아니지. 그러니 재미삼아 해보라고 한거고 ㅇㅋ?
@asdf : 뭔 소리임? 그게 가능하면 애초에 halting problem도 평가 가능하냐? 튜링 어워드는 개꿀이겠넹..
@adsf : 학교에서 과제 검사하는 양도 전부 테스트셋 돌리고 마는 판에. 규모있는 곳에서 그렇게 하는 곳 있으면 알려주셈여.
일단 학교에서 과제검사할때 우리는 교수가 시발 코드 한줄한줄 다 보는데, 어느 대학인지는 모르겠지만 그렇게 테스트셋 돌리는거로 '아 테스트 했다능' 하고 만족하는거면 수준이 보이네여;;
저런 테스트셋 기반으로 검사를 수행하는건 프로그램의 '기능성'을 확인하는거지. 정말로 알고리즘 자체를 테스트하는게 아님.
현실적인 제약때문에 백준과 같이 흔히들 사용하는 테스트셋 기반 검사를 수행하는거고. 걍 현실과 타협한 결과이지 뭐 거창한게 아님. 근데 그 테스트가 뭔지도 이해 못하면서 남들은 다 쓰고 그러는데~ 이 수준의 댓글은 님이 '테스트'가 뭔지도 모르는 사람이라는거임
튜링테스트 예시도 글러먹은게, 당연히 해당 테스트를 만족하는 알고리즘, 프로그램을 모르니 '기능성'만 중시하는거고, 그래서 입력 출력만 보는거지. ㄲㄲ
@ㅁㄴㅇㄹ : 남들은 다 쓰고 그러는데의 어투 아니었는데? ㅋㅋㅋ 그리고 대학에서 백단위 이상의 코드를 교수가 다 본다고? 으잌..대단하다..
백준에서도 문제풀이 알고리즘을 모르는가? ㄴㄴ 알고 있는 문제들이지. 그럼 튜링테스트랑 다른상황인 것을
애초에 시험문제에서도 손코딩해서 제출하라는게 나오는데
@ㅁㄴㅇㄹ : 예..저는 지잡이라..그런 굇수 교수님을 뵌적이 없어서 실수했네요..으잌으잌.
입출력만 보는건 졸라 간단한 기초테스트고, 그 다음엔 내부 알고리즘 졸라 분석하기 시작함.
@ㅁㄴㅇㄹ : 시험 문제에 손코딩해서 제출하라고 하나요? 우와..명문대는 그런가봐요? 저는 지잡이라 과제만 코드로 웹으로 제출하면 문제당 수백개정도 테스트케이스 돌려서 다 pass하면 통과인거고 시험은 코딩 문제는 없었는데..
컴공도 아닌데 손코딩하는거 대1부터 시험문제로 나오는데여... 나야말로 잘 이해 안가네
@ㅁㄴㅇㄹ : 그리고 애초에 자동화해서 이 알고리즘을 분석하는거면 제가 언급한 halting problem도 해결 가능함. 근데 뭔 딴소리임?
@ㅁㄴㅇㄹ : 역시 저는 지잡이라..몰라 뵈서 죄송합니다.. 시험에서 손코딩하는건 경험하지 못했습니다.
그게 뭔데여? ㅇㅅㅇ? 설명좀
컴공 아니라 모르는데여
정지문제 인터넷에서 봐도 잘 모르겠던데 왜 '자동화해서 알고리즘 분석하는거면' '정지문제를 해결 가능하다' 가 되는지 자세하게 설명좀 해주실수있어여? 궁금해서 그럼.
@ㅁㄴㅇㄹ : 흉이 얘기한대로 자동화해서 알고리즘을 분석해서 뭔가 이게 맞다. 아니다라고 정의를 내려줄수있다면. 이 프로그램이 정지할 것이다. 안할것이다도 평가해줄 수 있는거 아님?
@ㅁㄴㅇㄹ : 위에 흉이 얘기한대로 애초에 문제를 푸는데 1가지 방법만 존재하는 것도 아니니 말이죠..
@ㅁㄴㅇㄹ : 뭐 전 지잡이라 백단위규모의 제출물을 1주일마다 일일히 코드 하나하나 보면서 평가하는 능력자 굇수님을 보질 못해서요..
사실 내가 웹 기반으로 실시간 컴파일하는거 보고 '오 시발 개쩌네' 라고 과대평가했다가 그런거이긴한데. 내가 상상했던건 각 알고리즘마다 규격화된 또는 일반화된 알고리즘이 존재하고 그거와 비교를 할 줄 알았음. 그러면 이건 '임의의' 알고리즘을 분석하는게 아니라 이미 '분석된' 알고리즘을 평가하는 방식이 되는거라...
프로그램 뭐 거창한거 제출함? 전산수치해석 코드 복잡하게 짜도 3장 내외인데. 절라 간단한거 제출하는거고, 그러면 보는건 하루만에 가능함. 나도 조교해봐서암
troublecoder//뵈서->봬서 (뵈어 = 봬임) [리듬 맞춤법 봇♬]
troublecoder//일일히->일일이 (틈틈이 간간이 누누이 곰곰이 일일이 번번이 깨끗이 깊숙이 등등..) [리듬 맞춤법 봇♬]
아니 들어오는 코드가 임의의 코드인데 애초에 분석된거랑 뭔 상관임?
저도 조교해봤고요 ㅋㅋㅋ 근데 백명이 넘는 단위에 분반이 여러개일수도 있는데 그걸 코드 슥 봐서 맞는지 평가할 수 있다고?
니랑 나랑 환경이 아예 다르구만. 서로 노이해니 이만 끝내자고 ㄲㄲ.
흉네 학교 학생들은 뭐 빈칸 채우기로 코딩함? 진짜 신기하넹
나로서는 학교과제이고 복잡한 프로그램 짜는거도 아니면 그게 안된다는게 이해 안가는데, 님은 반대로 이해 안가니 더 무슨 대화가 필요함요
아니 알고리즘 문제 주고 손코딩시키는뎅 백지한장에 프로그램 짜야함
예를 들면 뭐가 있을까? 임의의 숫자 받아서 삼각형형태로 배치하기 같은거도 있었고 유사 어셈블리어로 간단한 루틴짜는거도 있었고 그럼
대1때 C를 처음 배우면 저게 시험문제였음.
흠 알고리즘 시간이나 이런거에? 물론 1학년 컴퓨터 프로그래밍 시험은 손코딩함. 난 백준 얘기하길래 1학년때 배우는 프로그래밍 수업이라 생각 못했넹. ㅇㅇ 흉이랑 차이나는 환경이긴하넹
아니 그냥 개론인데
망할 교수가 미쳐서 어셈블리어부터 알고리즘까지 다함.
ㅇㅇ 서로 전혀 다른 얘기했구낭. 흉 즐거운 오후되셈
대3~4때 과제로는 자석 주위에 자기장 계산하기, FDM, FEM 등등으로 미분방정식을 풀기. (차원은 2차원까지 확장됨)
그니까 나로서는 저런 알고리즘 문제 자체는 여러 방식으로 졸라 많이 봤는데, 저건 수렴된 형태의 알고리즘이 나올 수 밖에 없음.
그래서 일반화된 알고리즘 생각해본거고 근데 하여간 관점이나 다 다르니 대화는 더 무쓸모. ㅂㅂ
아 시발 뭔가 찝찝하다 했더니 글을 잘못썼다는걸 깨달음. 결국 대3~4때에도 대1때랑 똑같이 코드 다 보면서 확인함. 이걸 말할려다가 걍 갔네 이젠 정말 감 ㅂㅂㅂ