int foo(int *arr, int i, int j) {
if (i >= j)
return 0;
else {
int x;
for (int k=i; k<j; k++) {
if (k == i || x > arr[k]) {
x = arr[k];
}
}
return x;
}
}
인덱스 범위 [i,j) 에서 minimum 찾는 함수인데
else branch에서 i<j 인거랑 ||이 short-circuit evaluation 되는거 때문에 UB 안밟고 계산 잘 됨.
(short-circuit evaluation 없으면 x > arr[k] 처음 비교 할 때 x가 초기화 안돼있어서 UB임)
이 코드 주고서 안전한지 그렇지 않은지 물어봤는데
그냥 물어보면 전혀 감 못잡고
처음부터 끝까지 근거 대가면서 설명 해주면 끄덕끄덕 하는데
일부만 설명 안해주고 추론해보라고 하면 좀 알아먹는것 같다가 이전 자기 발언에 모순되는 대답함
좀 해보다가 귀찮아서 때려침.
원론적인 대답은 잘함. initialization 안하면 위험하다거나 저게 minimum 계산하는 함수라는 사실이나 (난 저게 무슨 함수인지는 물어보지도 않았지만)
근데 LLM이 저거 힌트 없이 잘 대답할 수 있으면 프로그래머들 모가지 되는거 한순간 일듯
프롬프트에 코드 동작 설명시키는 부분이 있는거같음 ㅋㅋ 코드가 좀만 관여된다 싶으면 안물어봐도 주절주절 동작 설명하더라
제로샷으로 하면 결과값 좀 안 좋음
추론이 되면 큰일나 알고리즘 대회 치팅 딱대
막줄이 핵심이지 저거되는순간 나는 국비로 배관공이나 열쇠수리공교육 들으러간다 흑흑